获取字体内所有Unicode编码

本文介绍了一种使用GetFontUnicodeRanges函数来获取指定字体所有Unicode范围的方法,并提供了详细的Delphi代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要是对GetFontUnicodeRanges的使用

// 获取选择的字体的所有Unicode范围
procedure TMarkerSymForm.doGetUnicodeRange;
var
  size : DWORD;
  lpgs : PGlyphSet;
  i, j : Integer;
  nStart, nEnd : Integer;
  oldFont : string;
begin
  m_Unicode :=  ' ';
  
  oldFont := dgCMCharacter.Canvas.Font.Name;
  dgCMCharacter.Canvas.Font.Name := fcboCMFont.FontName;

  size := GetFontUnicodeRanges(dgCMCharacter.Canvas.Handle, nil);
  
  if size  < > 0 then begin
    GetMem(lpgs, size);
    GetFontUnicodeRanges(dgCMCharacter.Canvas.Handle, lpgs);

    for i := 0 to lpgs.cRanges do begin
      nStart := Integer(lpgs.ranges[i].wcLow);
      nEnd   := nStart + lpgs.ranges[i].cGlyphs;

      for j := nStart to nEnd do begin
        m_Unicode := m_Unicode + WChar(j);
      end;
    end;

    Dispose(lpgs);
  end;

  dgCMCharacter.Canvas.Font.Name := oldFont;
  
end;

// m_Unicode保存字体中所有的Unicode宽字符 
### 查看TTF字体图标Unicode编码的方法 对于希望在Windows系统中查看TrueType Font (TTF) 字体图标的Unicode编码,可以采用多种方法来实现这一目标。 #### 使用字符映射表工具 内置于Windows系统的字符映射表(Character Map)应用程序能够帮助浏览并找到特定字体内的各个字符及其对应的Unicode值。启动此程序的方式是在运行对话框输入`charmap.exe`或者通过搜索栏查找“字符映射”。一旦打开该应用,可以选择想要探索的字体名称,在下方窗口内会显示出所有可用字符;当鼠标悬停在一个具体符号上时,状态栏底部会出现其详细的编码信息[^1]。 #### 利用第三方软件 除了官方提供的选项外,还有专门设计用于管理和预览字体文件的应用可供下载安装,比如NexusFont或FontForge。这类高级别的编辑器不仅支持显示单个字形连同它们各自的Hex/Dec码位,还允许用户执行更复杂的操作如自定义修改、导出子集等功能。 ```powershell # PowerShell脚本快速访问字符映射表 Start-Process charmap.exe ``` #### 编程方式获取 如果倾向于编程解决方案,则可以通过Python等语言编写简单脚本来批量读取指定ttf文件中的元数据以及各glyph关联的unicode points。下面给出了一段基于`fontTools`库的小例子: ```python from fontTools.ttLib import TTFont def get_unicode_points(font_path): font = TTFont(font_path) cmap = font['cmap'].getcmap(3, 1).cmap for codepoint in sorted(cmap.keys()): print(f"U+{codepoint:X} -> {chr(codepoint)}") get_unicode_points('path_to_your_font.ttf') ``` 上述代码片段展示了怎样解析本地存储的一个真型字体(.ttf),并将其中每一个可打印字符与其相应的十六进制形式unicode point配对输出到控制台。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值