如何确定 PostScript 字体的高度和深度?

2024-03-19

我正在寻找估计 PostScript 字体高度(上升部分的空间)和深度(下降部分的空间)的 PostScript 代码。字体的边界框可以吗(FontBBox)用于此目的?

这是我的问题的一些背景:字体的字形位于基线上。显然,带有下降部分的字形将到达基线以下,我想知道下降部分可以到达基线以下多远,以便我可以在布局中提供足够的空间。

我见过渲染给定字符串以检查其尺寸的 PostScript 代码 https://stackoverflow.com/q/3618194/44082。我对给定字体的一般答案很感兴趣。


好吧,你已经发现了这两条“捷径”。 FontBBox 给出了叠加在一起的字体中所有字形的边界框。false charpath flattenpath pathbbox给出指定字符串的框.

对于 Type 3(用户定义)字体,这就是您可以合理期望做的全部事情;但对于更流行的 Type 1 字体,两者都有丰富的度量信息in字体和“metrics”文件(对于其他应用程序)。

但这是我不太了解的部分。所以我将阅读(在 Adob​​e Type 1 手册中)并稍后扩展这个答案。

Edit:事实上,看起来这些可能是一般情况下最好的方法。

There is垂直对齐值数组,采用 Type 1 字体,位于 /Private 字典中,名称为 /BlueValues;但不能保证字体会尊重它们。数组中的第一个数字是基线超调;这是像“O”这样的字母的底部边缘,它低于基线。数组中的最大值将是上升高度超调 or the 上限高度超调(以较高者为准)。但任何单独的角色都可以在不考虑这些值的情况下绘制(因此,不能保证)。

另一方面,FontBBox 本身可能反映字体中存在的任何“特殊”字符的边界框,无论它们是否可以通过编码向量访问(即,您不能show他们,但必须glyphshow them).

所以最好的选择可能是采取pathbbox您打算使用的所有字符的字符串。这将忽略可能存在但与您的目的无关的任何其他角色的贡献。并且不要忘记flattenpath从曲线中删除控制点(可能远离“真实”边界框)。

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

如何确定 PostScript 字体的高度和深度? 的相关文章

  • iOS 7 自定义字体对齐

    在 iOS 6 上实现应用程序布局时 我使用了自定义 TTF 字体 Gotham 我注意到它的基线总是比常规字体高一点 但只是稍微调整一下以适应 现在我已经更新到 iOS 7 SDK 在 iOS 7 设备上运行时 字体位置更接近常规字体 但
  • 在按钮上绘制文本 - 外观差异

    I have my custom button where I have overridden the OnPaint and draw the text in it only On runtime the text looks diffe
  • Android模拟器的字体可以修改吗?

    我需要更改 Android 模拟器上安装的字体 例如 我想安装 TrueType 字体 它涵盖了其他一些语言环境 如阿拉伯语 中文等 我只是想知道这可能吗 你应该覆盖 system fonts DroidSansFallback ttf使用
  • 如何在drawString Java中更改字体大小

    如何让字体变大g drawString Hello World 10 10 g setFont new Font TimesRoman Font PLAIN fontSize 其中 fontSize 是一个 int 这绘制字符串的API h
  • 如何让“font-weight: lighter”在 Google Chrome 中正常工作?

    在 Google Chrome 可能还有 Safari 中 font weight normal 和 font weight bold 之间似乎没有任何区别 有没有人找到一种方法可以像 Firefox 那样在 Chrome 中调用 font
  • gnuplot 中的粗体增强文本

    更新 此问题已在 gnuplot 的较新版本 gt 5 0 中得到解决 请参阅 andyras 的回答 我很难让 gnuplot 在非 postscript 终端中创建带有粗体和增强文本的标签 以下脚本 usr bin env gnuplo
  • Bigcommerce 购物车页面和结帐页面忽略主题字体样式

    我有一个大型商业网站 这是网站链接https www taoaccents com https www taoaccents com我正在为网站使用简单的主题 我已经上传自定义字体并将其调用到 styles css 中 并使用正确的路径 下
  • 向 Apache Pdfbox 添加字体?

    有没有办法将其他字体样式添加到 Apache Pdfbox 中 我们目前正在尝试解决在我们的系统中打印 PDF 的问题 目前正在使用PDF渲染器 https java net projects pdf renderer 我一直在寻找各种替代
  • 在 Mac OS X 中的 R 包 Cairo 中设置系统字体

    由于提出的问题在 R 的 expression 命令中使用 Unicode https stackoverflow com questions 19881553 using unicode inside rs expression comm
  • iPhone 应用程序支持哪些字体? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我在这里找到了 iPhone 支持的字体列表 http daringfireball net misc 2007 07 iphone osx font
  • 在 .NET 中使用字体之前如何确保该字体存在

    我有一个 VB NET Windows 窗体项目 它在运行时将文本直接绘制到窗体上 不过 在使用字体进行绘画之前 我想确保用户计算机上存在该字体和字体大小 如果没有 我会尝试其他一些类似的字体 最终默认使用 Arial 或其他字体 在用户计
  • @font-face 在 Firefox 中不配合

    我尝试了很多事情 包括单击与我的问题相关的所有问题 有很多 并尝试了他们所有的 解决方案 但没有一个对我有用 我尝试将 eot 文件包装在条件 IE 语句中 但这也不起作用 有人说如果你不在自己的服务器上托管文件 font face 将无法
  • IE9 文本渲染问题 - 字母尾部被切断

    我遇到了一个问题 在 IE9 标准模式下 IE9 以降序字母的尾部 q p y 等 消失的方式呈现文本 已尝试使用填充和其他常见的 CSS 设置来帮助解决此问题 但到目前为止我还没有运气 谁知道这可能是什么 EDIT 我在博客上找到了这个
  • 自 2012 年底起实施@font-face

    我花了几个晚上研究在当今的现代浏览器中实现 font face 的最佳方法 我是一名全职网络 系统开发人员 具有图形设计师的背景 我发现网页设计的机会和可能性变得越来越有趣 因此 我做了一些测试 想听听是否有人对此有建议 更好的想法或意见
  • 为什么字体名称需要引号?

    据我所知 如果字体包含空格 则需要使用双引号或单引号 例如 font family Times New Roman Times font family Times New Roman Times 但在谷歌字体上 http www googl
  • Android更改ListView字体

    似乎是一个简单的问题 但由于我是 Android 开发新手 所以我对 Android ListViews 知之甚少 以下是我在项目中用于 ListView 的代码 Listview code starts mainListView List
  • 为什么 Yeoman 构建时没有字形图标?

    我正在研究一个webapp发电机及运行后grunt我有一个可以正确显示字体的功能应用程序 然而 当我检查dist 目录我没有得到任何字体文件 文档指出grunt命令build the application for deployment 但
  • font-awesome 字体未加载到 Angular 项目中

    我已经使用 Angular 5 一段时间了 似乎我无法将任何字体很棒的图标加载到我的构建项目中 我完全按照下面链接中提到的步骤进行操作 https www npmjs com package angular font awesome htt
  • 是否可以使 font-weight:bold 等于 500 而不是 700?

    我刚刚使用 Google Fonts 并发现了 Fira Sans 字体 很好 但我不喜欢 Bold 700 风格 它太大胆了 不符合我的喜好 但是 如果我选择中 500 样式 浏览器不会将其用于任何设置为font weight bold
  • PostScript:“cvs”是否终止字符串缓冲区?

    使用时的一个想法cvs是通过重用字符串缓冲区来帮助垃圾收集器 例如 s 5 string def s 2 cvs s 66 cvs 然而 当在循环中执行此类操作时 实际在缓冲区中找到的字符串是 40 0 30 0 20 0 10 0 0 0

随机推荐

  • Java中如何连接字符串?

    The strKeyword将根据循环重复进行 如何将结果保存为新字符串 例如 如果工作 hello 重复两次 我现在如何将 hellohello 创建为全新的字符串 for int l 0 l lt newKeywordLength l
  • Azure CLI:无法在 Windows PowerShell 中转义管道字符 (|)

    Scenario 我尝试在 Windows 计算机上使用 Azure CLI 创建 Azure Web 应用程序 不幸的是 我无法为我的网络应用程序选择运行时 当我尝试时 az webapp create n name g grop p p
  • 如何在javascript中添加到所有浏览器的收藏夹/书签[重复]

    这个问题在这里已经有答案了 我在使用 java 脚本的 添加到收藏夹 书签网页 中有一些查询 我只是在这个中进行了查询Link http www apphp com index php snippet javascript add to f
  • NSURLSession 委托方法未调用

    我创建了一个非常简单的应用程序来从我的网络服务器下载文本文件 我可以与 NSURLConnection 完美配合 但我正在尝试迁移到 NSURLSession 我遇到的问题是没有调用任何委托方法 我的服务器受密码保护 因此我需要使用基本的
  • Mac Catalyst 上的应用程序内购买不起作用

    应用内购买对于我的 iOS 方面来说效果很好 StoreKit 中的数据已按其应有的方式填充 相同的代码不适用于该项目的 Mac Catalyst 版本 我什至在 App Store 上为我的 Mac 应用程序创建了一个列表 并与应用程序内
  • ANTLRWorks 1.4.3 无法正确读取扩展 ASCII 字符

    我正在开发一个相当标准的编译器项目 我选择 ANTLR 作为解析器生成器 在将现有语法从 v2 更新到 v3 时 我注意到 ANTLRWorks ANTLR 的官方 IDE 无法正确显示文件中的任何扩展 ASCII 字符 即使使用 Note
  • HTML Div 宽度溢出:自动?

    我正在创建一个div像下面这样 编辑 这是一个例子 table tr td div style max height 15em div td tr table
  • 无法加载文件或程序集“Oracle.DataAccessVersion=9.2.0.700,Culture=neutral,PublicKeyToken=89b483f429c47342”

    无法加载文件或程序集 Oracle DataAccess Version 9 2 0 700 Culture neutral PublicKeyToken 89b483f429c47342 或其依赖项之一 找到的程序集的清单定义与程序集引用
  • React Native Airbnb Markers:标记成功消失,但没有重新出现

    我目前正在使用 React Native 构建一个应用程序 并使用 Airbnb 地图插件来动态显示标记 我的标记已成功从 firebase 数据库下载 并且下载的数组始终显示正确的内容 我这里有完整的代码以防万一https codepen
  • 相当于android中的timeIntervalSinceReferenceDate

    有没有一种方法可以计算相对于日期的时间间隔 与 iPhone 中的 timeIntervalSinceReferenceDate 非常相似 谢谢 System currentTimeMillis 返回自 1970 年 1 月 1 日午夜以来
  • 使用 bootstrap/angularjs 可编辑组合框

    我没有得到任何将组合框作为选择和输入的解决方案 这意味着如果用户选择不在每个填充列表中 那么用户应该能够输入他的选择值 用户的选择 选择或输入 应该在 AngularJS 中作为 ng model 进行设置和检索 thanks ui sel
  • 在 Perl 中我应该使用什么来代替 printf ?

    我需要在 Perl 中使用一些字符串替换来简化翻译 即替换许多 print Outputting n numbers 通过类似的东西 printf Outputting d numbers n 但是 我想用更易于人类解析的内容替换 prin
  • 如何仅使用查找和替换来查找并计算字符串中子字符串的所有出现次数?

    输入需要更低 最后程序必须打印出现的次数 例如内存 smthing str input if smthing smthing lower smthing find mem 我对此彻底崩溃了 所以我无法走多远 我忘了告诉你我不能使用计数或列表
  • openlayers 3 可以使用 gif 渲染动画标记吗

    我想问如何让标记像 openlayers 2 一样显示动画 gif 图片 它可以显示动画标记 我想要的是显示动画 gif 标记而不使标记移动 这可能吗 style anchorXUnits fraction anchorYUnits pix
  • 如何在 Emacs 中为 LaTeX 模式定义两个 ispell 字典?

    我有一份包含许多第二语言引文的文档 我如何将第二语言定义为 Ispell 我在文件顶部有这个 Local IspellDict brasileiro 我尝试了这个 但没有成功 Local IspellDict brasileiro engl
  • Java 中的异步事件调度

    我正在将 C 程序移植到 Java 该程序大量使用委托和委托的BeginInvoke异步通知事件的方法 以数据通信线程为例 它可能必须将其状态以及 GUI 通知给另一个工作线程 在我看来 通知不同班级的各种事件的最佳方法是有一个IClass
  • JavaScript 中的 getElementsByClassName().forEach() 函数不起作用

    我试图使用 JavaScript 通过类名获取 HTML 的每个元素 然后根据 a 中的值更改其高度和宽度range object onchange 浏览器显示错误 document getElementsByClassName forEa
  • VB6 有什么好的 TDD 工具或资源吗?

    是的 我知道我已经落后于时代了 但是我这里有一个古老的 VB6 编辑器应用程序 我相信没有人会很快升级到 NET 它使用了几个第三方 DLL 工具 并且由于它仍然使用旧的 RichEdit 控件 我基本上可以仅用这个工具来创建我自己的 Bu
  • 匹配法语和德语字符的正则表达式

    我正在解析请求参数以查找任何易受攻击的字符以防止 XSS 威胁 我们的网络应用程序支持英语以外的法语和德语 我使用以下正则表达式来实现此目的 但它无法处理法语和德语 a zA Z0 9 r n 对此的任何建议都将受到高度赞赏 p L 将匹配
  • 如何确定 PostScript 字体的高度和深度?

    我正在寻找估计 PostScript 字体高度 上升部分的空间 和深度 下降部分的空间 的 PostScript 代码 字体的边界框可以吗 FontBBox 用于此目的 这是我的问题的一些背景 字体的字形位于基线上 显然 带有下降部分的字形