mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-12 18:49:01 +08:00
fix: charts encoding (#2848)
This commit is contained in:
parent
8a4015722d
commit
cef16862da
@ -1,4 +1,6 @@
|
|||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
|
from fontTools.ttLib import TTFont
|
||||||
|
from matplotlib.font_manager import findSystemFonts
|
||||||
|
|
||||||
from core.tools.errors import ToolProviderCredentialValidationError
|
from core.tools.errors import ToolProviderCredentialValidationError
|
||||||
from core.tools.provider.builtin.chart.tools.line import LinearChartTool
|
from core.tools.provider.builtin.chart.tools.line import LinearChartTool
|
||||||
@ -6,6 +8,37 @@ from core.tools.provider.builtin_tool_provider import BuiltinToolProviderControl
|
|||||||
|
|
||||||
# use a business theme
|
# use a business theme
|
||||||
plt.style.use('seaborn-v0_8-darkgrid')
|
plt.style.use('seaborn-v0_8-darkgrid')
|
||||||
|
plt.rcParams['axes.unicode_minus'] = False
|
||||||
|
|
||||||
|
def init_fonts():
|
||||||
|
fonts = findSystemFonts()
|
||||||
|
|
||||||
|
popular_unicode_fonts = [
|
||||||
|
'Arial Unicode MS', 'DejaVu Sans', 'DejaVu Sans Mono', 'DejaVu Serif', 'FreeMono', 'FreeSans', 'FreeSerif',
|
||||||
|
'Liberation Mono', 'Liberation Sans', 'Liberation Serif', 'Noto Mono', 'Noto Sans', 'Noto Serif', 'Open Sans',
|
||||||
|
'Roboto', 'Source Code Pro', 'Source Sans Pro', 'Source Serif Pro', 'Ubuntu', 'Ubuntu Mono'
|
||||||
|
]
|
||||||
|
|
||||||
|
supported_fonts = []
|
||||||
|
|
||||||
|
for font_path in fonts:
|
||||||
|
try:
|
||||||
|
font = TTFont(font_path)
|
||||||
|
# get family name
|
||||||
|
family_name = font['name'].getName(1, 3, 1).toUnicode()
|
||||||
|
if family_name in popular_unicode_fonts:
|
||||||
|
supported_fonts.append(family_name)
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
|
plt.rcParams['font.family'] = 'sans-serif'
|
||||||
|
# sort by order of popular_unicode_fonts
|
||||||
|
for font in popular_unicode_fonts:
|
||||||
|
if font in supported_fonts:
|
||||||
|
plt.rcParams['font.sans-serif'] = font
|
||||||
|
break
|
||||||
|
|
||||||
|
init_fonts()
|
||||||
|
|
||||||
class ChartProvider(BuiltinToolProviderController):
|
class ChartProvider(BuiltinToolProviderController):
|
||||||
def _validate_credentials(self, credentials: dict) -> None:
|
def _validate_credentials(self, credentials: dict) -> None:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user