通过 fontforge 脚本获取字形宽度

2024-01-10

为了获取字形宽度,我将TTF字体为AFM,然后解析内容AFM文件来获取每个字形的宽度。

由于从技术上来说,fontforge正在从二进制文件中捕获字形宽度TTF文件,然后创建一个AFM字体文件基于AFM标准模板。我想知道是否可以直接转换TTF通过 fontforge 命令将文件保存到字形宽度列表?!?


FontForge 包括两个解释器,因此您可以编写脚本来修改字体。其中一种解释器是 Python(首选),一种是遗留语言。 Fontforge 嵌入了 Python,但也可以将 Fontforge 构建为 Python 扩展。

那么你会用什么:Python or 遗留语言? 什么接口:命令行 or GUI or Python 扩展?

命令行和遗留语言

该脚本可以位于文件中,也可以只是作为参数呈现的字符串。您可能需要通过 -lang 参数指定要使用的解释器。看命令行参数 http://fontforge.org/cliargs.html.

$ fontforge -script scriptfile.pe {arguments}
$ fontforge -c "script-string" {arguments}
$ fontforge -lang={ff|py} -c "script-string"

扫描后文档 http://fontforge.org/scripting-alpha.html#GlyphInfo我写了我的 scriptfile.pe:

Open($1, 1)
Select($2)
Print( GlyphInfo('Width') )

Than:

$ fontforge -script scriptfile.pe YourFont.ttf A
... # Some output truncated.
1298

从 GUI 执行脚本

打开字体。然后选择:“文件”>“执行脚本...”。进入:

Select('A')
Error(ToString(GlyphInfo('Width')))

单击“确定”。

Python 扩展

首先是单个字形的宽度(docs http://fontforge.org/python.html):

>>> import fontforge
>>> f = fontforge.open("YourFont.ttf")
>>> f['A'].width
1298

这是您问题的答案。对于每个字形,编码索引、名称和宽度:

>>> for i in f.selection.all():
...    try:
...       name, width = f[i].glyphname, f[i].width
...       print i, name, width
...    except:
...       pass
... 
0 uni0009 0
2 uni0002 0
13 nonmarkingreturn 510
# ... Truncated ...
65707 germandbls.smcp 2266
>>>

注意:我使用了 try/ except 因为不知何故f.selection.all()也选择非字形。访问不存在的字形将引发错误。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 fontforge 脚本获取字形宽度 的相关文章

  • 将字体导入 React 应用程序

    我正在尝试在我的应用程序中使用 Roboto 字体 但遇到了困难 I did npm install save typeface roboto并添加了import typeface roboto 到我的 React 组件 但仍然无法改变我的
  • 如何在 Qt-Embedded 中(正确)输出多语言文本?

    我的目标系统是 linux 3 3 7 Qt Embedded 开源版 4 8 Droid 字体 取自 fonts droid 20111207 git 1 all deb Debian 软件包并复制到 usr lib fonts目录 主要
  • 在 netBeans 中运行程序时,字体看起来非常奇怪

    我在我的新 MacBook M1 上设置了 netBeans 和 SceneBuilder 除了运行程序时的字体外 一切正常 它看起来像这样 我不知道为什么 按钮应显示 Click me 标签应显示 Hello 我收到的错误消息是 M rz
  • 如何在我的 AWS EC2 实例上安装特定字体?

    我有一个在 AWS EC2 Amazon Linux Elastic Beanstalk 实例上运行的 Python 应用程序 该实例需要某些特定字体才能生成输出 并且想知道如何在部署或实例启动过程中安装它们 我的代码在本地计算机 OS X
  • 如何更改 Flutter 中的默认字体系列

    如何更改应用程序的每个文本以使用特定字体 我可以使用以下命令单独更改它们TextStyle 但如何让我的应用程序默认使用特定字体 你能告诉我怎么做吗 您可以按照以下步骤更改 Flutter 应用程序的默认字体系列 1 将字体文件添加到项目文
  • 如何向 Rails 应用程序添加自定义字体?

    我想在 RoR 应用程序中使用几种字体 但它们的格式主要是 ttf 和 otf 等 我该如何将这些文件嵌入到我的 Rails 应用程序中 也就是说 一旦我将它们放入我的资产文件夹中 将它们嵌入我的 CSS 和 或 LESS 文件中的语法到底
  • @font-face 和 font-variant 是个坏主意吗?

    如果我使用 font face字体和font variant small caps对于相同的选择器 字体将回退到 Safari 中的下一个系统默认字体 我该如何解决这个问题 我一开始在创建一个示例来复制您的问题时遇到了一些麻烦 这让我意识到
  • jQuery 检查字体粗细是正常还是粗体

    我使用以下代码设置 font weight 属性 this css font weight normal 现在我想检查一个元素是否具有粗体或正常的字体粗细属性 我该怎么做 你可以使用以下方法得到它 fontWeight this css f
  • Android 支持哪些字体文件类型?

    Android 支持哪些字体文件类型 例如与 Typeface createFromAsset 一起使用 我似乎找不到文档中列出 我可以看到一些教程中提到了 TTF 并且这里有人暗示现在也支持 OTF 但是是否有一个完整的列表显示不同 AP
  • iOS7:我们可以在 Dynamic Type 中使用 Helvetica Neue 以外的字体吗?

    我们正在为 iOS7 设计一个应用程序 我们的设计师想要使用非默认字体 Avenir 但我不想失去动态类型功能 据我了解 动态类型只能与默认系统字体 Helvetica Neue 一起使用 是否可以使用其他字体 或者目前无法选择 据我了解
  • Graphics2D setfont() 严重减慢了 java 应用程序的启动速度

    我正在用java制作一个游戏 它每秒刷新60次 每次执行循环时 我都会使用 g2d 来绘制图像和字符串 如果我这样做的话一切都会很好g2d setFont new Font Arial Font PLAIN 8 和抽绳 这将是正常的 但如果
  • 如何检查字体是否有符号

    我的文档中有以下 css 规则 font family Trebuchet MS Tahoma 但我发现有些浏览器有 Trebuchet MS 字体没有我需要的符号 某些带有非拉丁字符的语言 在这种情况下 浏览器显示方块而不是符号 我怎样才
  • 设置 jdialog 框中文本的格式

    我有一个 JOptionPane JOptionPane showMessageDialog null text 文字是一个刺 String text Hello world 我想做的是改变文本的颜色 特别是一个单词 让我们说 你好 所以我
  • 仅从 PDF 中提取粗体文本的最佳方法

    iTextSharp 是一个很棒的工具 我可以使用PdfTextExtractor GetTextFromPage reader iPage 它工作得很好 但是有没有办法从 pdf 中只提取粗体文本 例如标题 而不是所有内容 无论编程语言如
  • 在 swift 中使用自定义字体[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个用于 swift sprite kit iOS 的字体 该字体用于商业目的 我正在尝试拥有一
  • 使用书法库的某些活动使用不同的字体

    我在用书法 https github com chrisjenx Calligraphy在我的应用程序中使用自定义字体的库 我使用默认字体为整个应用程序设置了自定义字体CalligraphyConfig in my Application类
  • 在android中使用外部字体

    我想在我的应用程序中使用外部字体 我尝试过添加新的fonts using AssetManager但它不起作用 下面是我的代码 Typeface face face Typeface createFromAsset getAssets fo
  • 在 JButton 上显示 Unicode 字符

    我正在尝试显示这个 Unicode uD83D on a JButton文本 但当我编译时 它只显示未知字符的平方 托马斯给出了一个很好的答案 但请注意 为了避免猜测哪些已安装的字体支持字符或字符串 我们可以迭代可用的字体并使用canDis
  • Python3如何安装.ttf字体文件?

    我想使用 python3 更精确的 Python 3 6 代码在 Windows 10 上安装 ttf 字体文件 我用谷歌搜索 但我发现的唯一的就是这个使用python在windows上安装TTF字体 https stackoverflow
  • 如何强制 JavaFX 字体抗锯齿?

    在测试 JavaFX 8 应用程序的 GUI 时 我注意到某些标签不显示抗锯齿文本 经过一番谷歌搜索和挣扎后 我发现正在发生一件非常烦人的事情 抗锯齿仅应用于字体大小大于 80 像素的标签 下面是一个比较应用了 AA 的 JavaFX 和

随机推荐

  • 即使使用 -ms 前缀,CSS 网格也无法在 Edge 中的 IE11 上运行 [重复]

    这个问题在这里已经有答案了 我一直在遵循指南关于让网格在 IE 11 上工作 我的问题是 即使遵循这些规则 列和行也只是相互重叠 而不是占据它们的网格位置 这是一个会导致问题的简单代码示例 HTML div class grid div T
  • 有没有办法打印 jupyter/ipython 笔记本幻灯片演示文稿?

    有没有办法打印出 jupyter ipython 笔记本幻灯片的幻灯片 是否可以从 nbviewer 网站 http nbviewer ipython org http nbviewer ipython org 我知道我可以打印我的笔记本的
  • nginx 在请求后关闭上游连接

    我需要保持 nginx 和上游 Nodejs 之间的连接 刚刚编译安装nginx 1 2 0 我的配置文件 upstream backend ip hash server dev 3001 server dev 3002 server de
  • Play Framework 2.1 的字符集编码错误

    我有一个 Web 服务 它接收 ISO 8859 1 编码的参数 但是当我尝试从请求中读取它时 我得到以下字符 我已经尝试了所有这些方法 但都没有将给定的字符串转换为预期的字符串 val a new String html getBytes
  • 如何将 system.drawing.image 转换为 system.web.ui.webcontrols.image

    我用来以字节为单位存储图像并能够将其转换为 system drawing image 但不确定如何在页面上呈现它 Thanks 您可以创建 ASPX 页面 该页面将图像文件作为带有适当标题信息的字节数组返回 要获取图像 您可以像这样调用此页
  • WPF ListBox WrapPanel 剪辑长组

    我创建了一个列表框来按组显示项目 当组不再适合列表框面板的高度时 它们会从右到左换行 因此 组在列表框中的显示与此类似 其中每个组的高度是任意的 例如 组 1 的高度是组 2 的两倍 1 3 5 4 6 2 以下 XAML 工作正常 因为它
  • malloc 如何与严格别名一起工作 - 它只能在单个编译单元内被违反吗?

    看完之后this https stackoverflow com questions 54237004 strict aliasing rule uint8 t buffer to structure 我有一个类似的问题this one h
  • 在 OSX 和 Mono 上使用 C# 进行开发

    我即将启动一个需要我编写 C 代码的项目 问题是 我有一台 Mac 我想知道在 OSX 10 6 上使用 mono 进行 c 开发是否存在任何陷阱 我认为该页面很清楚 实现很清晰 但另一方面 我读到人们安装 VMWare 或类似的东西来使用
  • 如何提交不更改和新消息?

    我怎样才能制作一个新的commit如果没有对文件进行任何更改 则创建一条新消息 这是不可能的 因为提交的代码 SHA 将是相同的 很少有充分的理由这样做 但参数是 allow empty对于空提交 没有更改文件 与 allow empty
  • Pandas groupby 结合 sklean 预处理续

    从这篇文章继续 Pandas groupby 与 sklearn 预处理相结合 https stackoverflow com questions 42772758 pandas groupby in combination with sk
  • JavaScript 中数组扩展语法的替代方案

    所以我正在使用使用 ES5 JavaScript 的旧代码库 这意味着我无法传播数组 var listOfItems item1 test 1 item2 test2 2 var docDefinition style piecesTabl
  • 如何创建一个有时间限制的哈希/密钥?

    我正在尝试创建一个有时间限制的密钥以在我的一个应用程序中使用 该密钥用于解锁应用程序中的某些功能 到目前为止我的想法是 生成 加密哈希我需要的各种信息 密钥生成日期 验证 加密哈希我需要的各种信息 现在的日期 如果所有信息都相同且日期相同
  • facebook-api:Facebook Connect 跨域接收者 URL 是什么?

    我正在尝试配置我的 Facebook 应用程序可调整大小 文档位于http wiki developers facebook com index php Ressized IFrame http wiki developers facebo
  • 编译时检查特征特化是否具有唯一的 id

    我看过很多帖子解释如何为类生成唯一的 id 就我而言 id 由用户选择 出于各种原因 但我想确保没有 id 在不同的类中使用两次 我将问题简化为以下代码 struct A struct B template
  • html.hidden 未在 asp.net MVC 核心 Razor 视图中设置值

    我正在开发一个 ASP NET MVC 核心应用程序 我有一个带有如下表单元素的弹出窗口 using Html BeginForm AddIVR ITPVoice FormMethod Post new role form Html Hid
  • 应用程序处理错误:意外的 CFBundleExecutable 密钥

    我正在尝试在启用 bitCode 的情况下向 Apple 提交 每次我提交时我都会收到这封电子邮件 我们发现您最近交付的 MyAPPP 存在一个或多个问题 要处理您的交货 必须纠正以下问题 意外CFBundle可执行密钥 Payload M
  • Sass 从模块扩展类

    使用 sass 中的新模块系统 使用 use 而不是 import 我如何在一个文件中定义一个类并使用 extend 在另一个文件中使用它 File 颜色 scss element background color blue 主文件 use
  • 如何将包发布到 TeamCity nuget 服务器?

    我们有一个为 nuget 配置的 TeamCity 7 服务器 它托管在没有外部连接的计算机上 是否可以将包发布到 TeamCity nuget 服务器 例如 如果我们想要将 log4net 包依赖项添加到我们的项目之一 则需要将其发布到
  • 查找数组中大于或等于N的数

    如果我有一个 PHP 数组 array 具有价值观 45 41 40 39 37 31 我有一个变量 number 38 如何返回值 39 因为这是数组中最接近 38 向上计数 的值 Regards taylor
  • 通过 fontforge 脚本获取字形宽度

    为了获取字形宽度 我将TTF字体为AFM 然后解析内容AFM文件来获取每个字形的宽度 由于从技术上来说 fontforge正在从二进制文件中捕获字形宽度TTF文件 然后创建一个AFM字体文件基于AFM标准模板 我想知道是否可以直接转换TTF