字体

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()

在哪里可以找到Unicode字符代码?

Unicode Characters