字体¶
DPG嵌入了一份‘ProggyClean.ttf’(由特里斯坦·格里默制作),这是一种默认使用的13像素高、像素完美的字体。ProggyClean的伸缩性不是很好,因此建议您在希望美观并支持多种分辨率的应用程序中使用DPG时加载您自己的文件。
您可以通过加载外部.ttf/.OTF文件来执行此操作。在 Assets 文件夹中,您可以找到一个OTF字体的示例。
自述文件优先¶
所有加载的字体字形都提前渲染到单个纹理图集中。添加/删除/修改字体将导致重新生成字体图集。
您可以使用样式编辑器 show_font_manager
浏览您的字体,并了解发生了什么,如果你有问题。
字体加载说明¶
要添加您自己的字体,必须首先创建要向其中添加字体的字体注册表。接下来,将字体添加到注册表中。默认情况下,仅添加基本拉丁语和拉丁语补充字形(0x0020-0x00FF)。
import dearpygui.dearpygui as dpg
dpg.create_context()
# add a font registry
with dpg.font_registry():
# first argument ids the path to the .ttf or .otf file
default_font = dpg.add_font("NotoSerifCJKjp-Medium.otf", 20)
second_font = dpg.add_font("NotoSerifCJKjp-Medium.otf", 10)
with dpg.window(label="Font Example", height=200, width=200):
dpg.add_button(label="Default font")
b2 = dpg.add_button(label="Secondary font")
dpg.add_button(label="default")
# set font of specific widget
dpg.bind_font(default_font)
dpg.bind_item_font(b2, second_font)
dpg.show_font_manager()
dpg.create_viewport(title='Custom Title', width=800, height=600)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()
加载特定的Unicode字符¶
有几种方法可以从字体文件中添加特定字符。您可以使用范围提示、范围和特定字符。您还可以重新映射角色。
import dearpygui.dearpygui as dpg
dpg.create_context()
with dpg.font_registry():
with dpg.font("NotoSerifCJKjp-Medium.otf", 20) as font1:
# add the default font range
dpg.add_font_range_hint(dpg.mvFontRangeHint_Default)
# helper to add range of characters
# Options:
# mvFontRangeHint_Japanese
# mvFontRangeHint_Korean
# mvFontRangeHint_Chinese_Full
# mvFontRangeHint_Chinese_Simplified_Common
# mvFontRangeHint_Cyrillic
# mvFontRangeHint_Thai
# mvFontRangeHint_Vietnamese
dpg.add_font_range_hint(dpg.mvFontRangeHint_Japanese)
# add specific range of glyphs
dpg.add_font_range(0x3100, 0x3ff0)
# add specific glyphs
dpg.add_font_chars([0x3105, 0x3107, 0x3108])
# remap や to %
dpg.add_char_remap(0x3084, 0x0025)
dpg.show_font_manager()
dpg.create_viewport(title='Custom Title', width=800, height=600)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()