UOS上,可以方便的用fc-query 或者fc-cat 查询某个字体包含了哪些文字,列出来的位置是按照unicode的区块位置来表示的。其实如果要直观点看,直接用字符映射表(apt install gucharmap)来查看更直观一点。而且还可以复制你想要的字符,不用考虑如何输入的问题了。

fc-query

 fc-query /usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-oblique.otf
Pattern has 24 elts (size 32)family: "Latin Modern Mono Light"(s) "LM Mono Light 10"(s)familylang: "en"(s) "en"(s)style: "10 Oblique"(s) "Italic"(s)stylelang: "en"(s) "en"(s)fullname: "LMMonoLt10-Oblique"(s) "LM Mono Light 10 Oblique"(s) "Latin Modern Mono Light 10 Oblique"(s)fullnamelang: "en"(s) "en"(s) "en"(s)slant: 110(i)(s)weight: 80(f)(s)width: 100(f)(s)foundry: "UKWN"(s)file: "/usr/share/texmf/fonts/opentype/public/lm/lmmonolt10-oblique.otf"(s)index: 0(i)(s)outline: True(s)scalable: True(s)charset: 0000: 00000000 ffffffff ffffffff 7fffffff 00000000 ffffffff ffffffff ffffffff0001: ffffffff fef3ffff fffffdff ffffff3f 00044000 00018003 3f9fe000 fc310cc00002: 0f333333 00800000 03000000 00000000 00000000 c0000000 3f0000c0 000000000003: 00029fdf 0007c048 00000000 00000000 fffe0000 000003fb 00000000 00000000000e: 00000000 80000000 00000000 00000000 00000000 00000000 00000000 00000000

fc-cat

fc-cat  | grep lmmonolt10-oblique
/usr/X11R6/lib/X11/fonts: 没有那个文件或目录
/home/actionchen/.fonts: 没有那个文件或目录
"lmmonolt10-oblique.otf" 0 "Latin Modern Mono Light,LM Mono Light 10:familylang=en,en:style=10 Oblique,Italic:stylelang=en,en:fullname=LMMonoLt10-Oblique,LM Mono Light 10 Oblique,Latin Modern Mono Light 10 Oblique:fullnamelang=en,en,en:slant=110:weight=80:width=100:foundry=UKWN:index=0:outline=True:scalable=True:charset=20-7e a0-131 134-137 139-148 14a-165 168-17f 18e 192 1a0-1a1 1af-1b0 1cd-1d4 1d7-1dd 1e6-1e7 1ea-1eb 1f0 1f4-1f5 1fa-201 204-205 208-209 20c-20d 210-211 214-215 218-21b 237 258-259 2be-2bf 2c6-2c7 2d8-2dd 300-304 306-30c 30f 311 323 326 32e-332 391-3a1 3a3-3a9 e3f 1e0c-1e0f 1e24-1e27 1e2a-1e2b 1e2e-1e2f 1e36-1e39 1e42-1e47 1e58-1e5d 1e62-1e63 1e6c-1e6f 1e80-1e85 1e92-1e93 1e97 1ea0-1ef9 2010-2011 2013-2014 2016 2018-201a 201c-201e 2020-2022 2026 2030 2039-203b 203d 203f-2040 2044-2046 2052 2054 20a1 20a4 20a6 20a9 20ab-20ac 20b1 2103 2116-2117 211e 2126-2127 212e 2190-2193 2212 2215 2217 221a 221e 2222 2300 2329-232a 2422-2423 25e6 266a 26ad-26ae 27e6-27e7 ea00-ea11 ea14-ea1f ea25-ea36 ea38-ea46 eb02-eb04 eb08-eb0a eb0d eb0f-eb12 eb15-eb17 eb19 eb1e-eb1f eb29-eb2b eb2e-eb2f eb31-eb32 eb35-eb36 eb3a-eb3b eb40 eb43 eb48-eb49 eb4c-eb4d eb50-eb57 eb5a eb63-eb67 eb6b eb6e-eb6f eb7e ec01 ec06-ec0e ec10-ec11 f638 f643-f64c f6be f6de f724 f7a2:lang=aa|ast|ay|bi|bin|br|bs|ca|ch|co|cs|cy|da|de|en|eo|es|et|eu|fi|fj|fo|fr|fur|fy|gd|gl|gn|gv|ho|hr|hu|ia|ig|id|ie|io|is|it|ki|la|lb|lt|lv|mg|mh|mt|nb|nds|nl|nn|no|nr|nso|ny|oc|om|pl|pt|rm|ro|sk|sl|sma|smj|smn|so|sq|ss|st|sv|sw|tk|tl|tn|tr|ts|uz|vo|vot|wa|wen|wo|xh|yap|zu|an|crh|csb|fil|hsb|ht|jv|kj|ku-tr|kwm|lg|li|ms|na|ng|pap-an|pap-aw|rn|rw|sc|sg|sn|su|za:fontversion=131334:capability=otlayout\\:DFLT otlayout\\:cyrl otlayout\\:latn:fontformat=CFF:decorative=False:postscriptname=LMMonoLt10-Oblique:color=False:symbol=False:variable=False"

这两者列出来的charset都是一样的,只不过一个直接写的范围,另一个列出位置空位和占位图了。

fc-query查询出来的更直观一点,直接能表示在某个位置是空的还是有字符的。和fc-cat去缓存里面查询的是对应的,fc-cat直接写的范围。

下来来换算下这2个列出来的位置

fc-query列出来的第一列是unicode字符位号的U+xxxxx的前4位,后两位就是实际后面的用16进制数表示的位置。

比如这个拉丁字体支持的字符用fc-cat查询出来是charset=20-7e开头,

而fc-query查询出来是下面这种更直观的。

0000: 00000000 ffffffff ffffffff 7fffffff 
     按位置的二进制值展开就可以得到对应的字符编码位号里面有没有字符了。

unicode字符位置图只列了前面一点点,按照这个位置推导,括号里面是unicode位号,括号外面的数字就是fc-query查询出来的每个位置的值,位号里面如果有字符,则取括号外面的值,然后排列起来就得到fc-query查询出来的值了。

1(00) 2(01) 4(02) 8(03) 1(04) 2(05) 4(06) 8(07) 1(08) 2(09) 4(0A) 8(0B) 1(0C) 2(0D) 4(0E) 8(0F) 1(10) 2(11) 4(12) 8(13) 1(14) 2(15) 4(16) 8(17) 1(18) 2(19) 4(1A) 8(1B) 1(1C) 2(1D) 4(1E) 8(1F) 1(20) 2(21) 4(22) 8(23) 1(24) 2(250 4(26) 8(27)

00f7: 00000000 00000010 00000000 00000000 00000000 00000004 00000000 00000000

按照上面的位号来推导一下U+00F7xx这个位置的字符分布情况。

按照上面的表来对00F7这一行的00f7: 00000000 00000010 部分展开

00F7-00 00F707
00F7-08 00F70F
00F7-10 00F717
00F718 00F71F
00F720 00F724(有字符,值是1) 00F727
00F728 00F72F
00F730 00F737
00F738 00F73F

这里我简单推了一下,很无聊,不过其实感觉fc-cat其实给的很清楚了。或者是直接字符映射表查看就能知道。而且还能知道这个字符是啥。至于属于哪一个语言区块,就只能去查unicode的字符分配表了。

另外,对于ttf otf字体,有x11工具 ttx可以做dump

How to list all supported glyphs of a given font | Newbedevhttps://newbedev.com/how-to-list-all-supported-glyphs-of-a-given-font

这个地址的大佬还写了个shell,可以命令行列出字体包含的字符。

查询字体文件所包含的文字相关推荐

  1. 查找计算机里包含相关文字,win10系统搜索文件中包含的文字来找到该文件的详细方案...

    win10系统使用久了,好多网友反馈说关于对win10系统搜索文件中包含的文字来找到该文件设置的方法,在使用win10系统的过程中经常不知道如何去对win10系统搜索文件中包含的文字来找到该文件进行设 ...

  2. 判断 ttf 字体文件是否包含某个字

    在Unity中,如果指定的字体不包含某个字,Unity就会从 自带的 Arial 中读取字形来创建这个字,本意是好的,但是总是会有问题. 在我们游戏中就有这样的问题,自己制作的微软雅黑字库不包含繁体字 ...

  3. android字体文件过大,加载字体文件过大的问题,不是icon,而是fontFamily

    目前在写app时遇到ttf文件加载太大了,放本地打包比app还大(差不多了),放服务器加载太慢,于是乎想要看看能不能把这个ttf字体包搞小一点. 首先是加载字体文件的loadFontFace,插件市场 ...

  4. 使用fontTools解析字体文件name数据表

    使用fontTools解析字体文件name数据表 导入库 使用的库是fontTools from fontTools.ttLib import TTFont 预备知识 一个字体文件中是存在很多张数据表 ...

  5. 查询linux文件信息命令

    1.查询相关命令 查看文件的具体路径:locate: 查看文件的命令有:ll.ls .cat .more 等: 查询关键字的命令有:grep find等: 2.显示具体的行数 (1)如果显示前几行 显 ...

  6. 【工具】在TTF字体中提取想要的文字,让字体文件变迷你

    看到个非常实用的字体剪辑博文,记下以备后用.原地址为http://blog.csdn.net/ldpjay/article/details/46561031,大家可以到原地址查看. [说明] 游戏中经 ...

  7. python使用fpdf生成发票格式的pdf文件包含:文字、图片logo、表格、条形码等;

    python使用fpdf生成发票格式的pdf文件包含:文字.图片logo.表格.条形码等: pip install fpdf #python使用fpdf生成发票格式的pdf文件包含:文字.图片logo ...

  8. fontTools库来检测字体文件中是否包含某字符

    在使用字体渲染某些字符时,有可能渲染出空白或者"口"字形,原因在于该字体文件中不包含该字符的字形. 可能的原因包括: 字符不在字体的cmap表中(cmap表是字体文件声明的支持字符 ...

  9. 自定义字体文件解析成人眼可识别文字

    # coding=utf-8 from fontTools.ttLib import TTFont from PIL import Image, ImageDraw, ImageFont #绘制图片 ...

最新文章

  1. ORACLE8对象模型
  2. 修改mysql用utf8mb4_更改MySQL数据库的编码为utf8mb4
  3. OS_CORE.C(1)
  4. 【转载】[OS X笔记]安装MacPorts
  5. C语言使用array实现stack(附完整源码)
  6. KUKA通信 CREAD问题
  7. c语言数组-1_C数组-智能问题与解答
  8. timestamp类型的数据如何赋值_VBA一组代码如何搞定赋值给数组arr及回填数据给工作表...
  9. 阿里云-CentOS7安装Vsftpd
  10. java中ping多个ip_在Java中ping多个服务器
  11. echarts结合amap (echarts-extension-amap)
  12. 模拟游戏在设计上是如何处理对仿真性的追求的?
  13. 易语言调用c 自定义数据类型,用__stdcall实现易语言调用C/C++的dll
  14. JeecgBoot 2.4.6 版本发布,基于代码生成器的企业级低代码平台
  15. 【详细!!】计算机类书籍整理
  16. 以实验理解交换机原理
  17. Redis(3.2.3)集群部署实战
  18. 使用canvas绘制一个动态的表盘
  19. TIA西门子博途下载HMI程序后,画面中文字体显示乱码的处理对策
  20. Oracle,UGA用户全局区域

热门文章

  1. 飞机一般是什么操作系统?
  2. 什么是bug?如何描述一个bug?
  3. PHP---保留小数并且(不)四舍五入
  4. 获取时间戳,以秒,毫秒,微妙为单位
  5. Amazon EKS基于GitLab的CICD实践一 GitLab的部署和配置篇
  6. 加州理工学院宋飏老师招收机器学习全奖博士生|2023秋季
  7. 北大韦神答辩PPT,最后一页文字被挑剔
  8. 基于经典蓝牙的安卓蓝牙APP开发(基于蓝牙2.0开发,例:HC-05)
  9. 由浅入深,66条JavaScript面试知识点
  10. 2个步骤让你秒获KOL抖音运营数据分析报告