如何使用 FOP 在 XML-FO 中指定 2ch 缩进

2024-02-12

我正在尝试在 XML-FO 文档中使用固定宽度字体创建两个字符的缩进。我正在使用 FOP 进行翻译。

不幸的是,当我指定像这样的长度时"2ch",FOP 产生以下错误消息:

[ERROR] PropertyMaker - Unknown length unit 'ch'

XML-FO 文档规定允许任何 CSS 已知的长度单位,并且 CSS 指定ch是宽度0特点。所以 AFAIU 这应该有效,但仍然无效。

我也未能找到 FOP 理解的长度单位的具体列表(ix也没有工作)。这em不过,可以理解。但它表示(即使使用固定宽度字体等宽字体时)大约为 1.5 个字符的宽度。

有没有办法指定在等宽字体中缩进两个字符?

FOP 支持的长度单位有完整列表吗?

还有另一种方法可以实现我缩进具体数量的字符的目标吗?我可以使用像这样的黑客1.3em但这可能不准确。


中定义的计量单位XSL推荐 https://www.w3.org/TR/xsl/#d0e5752 are:

  • cm(厘米)
  • mm(毫米)
  • in(英寸)
  • pt(分)
  • pc (picas)
  • px(像素)
  • em(当前字体大小)

FOP 支持所有这些,加上mpt(毫点),但正如您所注意到的,它们都不是指等宽字体的字符宽度。

其他格式化程序可能支持其他测量单位,例如我看到Antenna House XSL 格式化程序 https://www.antennahouse.com/product/ahf63/ahf-ext.html#ext-unit-conf支持ch.

FOP 的可能解决方法

如果您只需要一个text-indent(即仅针对第一行),您可以使用不间断空格:

<fo:block>&#x00A0;&#x00A0;Lorem ipsum dolor ...</fo:block>

如果您事先知道该块只会生成一行,您也可以使用保留规则空间为了更容易阅读 FO 文件:

<fo:block white-space-treatment="preserve" 
    white-space-collapse="false">  Lorem ipsum dolor ...</fo:block>

在最一般的情况下(如果你想定义一个start-indent, end-indent,...),您可以使用字体信息计算精确值:

  1. 创建字体规格

    java -classpath build/fop.jar:fop/lib/avalon-framework-api-4.3.1.jar:fop/lib/commons-logging-1.0.4.jar:fop/lib/commons-io-1.3.1.jar:fop/lib/xmlgraphics-commons-svn-trunk.jar org.apache.fop.fonts.apps.TTFReader -enc ansi /path/to/font.ttf metrics.xml

  2. open metrics.xml并寻找类似于的元素<char idx="29" wdt="600"/> (the wdt值可以不同,但​​对于所有人来说应该是相同的char元素)

  3. wdt是以毫点为单位的字符宽度:将其乘以font-size和字符数,然后你就得到了你需要的长度

例如:600 x 12 x 2 = 14400mpt = 14.4pt = 两个字符的长度font-size of 12pt

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

如何使用 FOP 在 XML-FO 中指定 2ch 缩进 的相关文章

  • 如何更改 Material UI 版本 5 自动完成中的选项字体大小?

    我想更改下拉项目的字体大小 我尝试了不同的方法来改变字体大小 如下所示 如何更改 Material UI 自动完成字体大小 https stackoverflow com questions 62492939 how do i change
  • a:active 不起作用

    我在这里很困惑 the a active不工作 但是 hover工作正常 我已经尝试了很多事情 但这个让我陷入困境 而且真的很令人困惑 我刚刚在表中添加了链接 我已将单元格添加到了类中 menu1 现在 当我访问活动页面时 活动链接不会突出
  • iPhone 上的 Chrome 溢出空白页面上的内容(仅在新选项卡上,而不是重新加载)

    在 iOS Chrome 上 正文会在没有内容的新选项卡或页面上溢出 但如果重新加载页面 问题就会得到解决 它会给位于底部的任何元素 绝对或固定 带来问题 这是重现问题的代码
  • 为什么 Flexbox 会拉伸我的图像而不是保留纵横比?

    Flexbox 具有这种行为 它将图像拉伸到其自然高度 换句话说 如果我有一个带有子图像的 Flexbox 容器 并且我调整了该图像的宽度 则高度根本不会调整大小 并且图像会被拉伸 div display flex flex wrap wr
  • 导航栏折叠在 Bootstrap 中不起作用

    Bhanu pratap 解决了这个问题 在这个问题的末尾检查一下 我一直在遵循旧的路线来构建导航栏折叠 三明治 问题是课程中的页面顶部似乎有一个黑条 并且缩小页面时会出现导航栏 对我来说 我只需在左侧找到一个按钮 另外 当我缩小页面时 我
  • 使用JQuery检查元素是否有边框?

    所以我正在玩 el css 尝试确定元素是否有边框 我用 css border style solid 设置边框 这是可行的 但实际上它设置了 4 种单独的样式 border right style border left style bo
  • 如何仅使用CSS设置某个角的边框半径

    如上所示 我可以只给顶部部分而不给底部提供半径 或者有时给底部而不是顶部提供半径吗 有没有办法只给一个角提供边界半径 Like border radius top left top right bottom right bottom lef
  • CSS - SASS:使用基于@each的mixins来生成多个背景

    我正在使用 CSS 创建发型和颜色目录 我有 55 种不同颜色和发型的组合 每种发型和颜色都有自己的图像 SVG 文件 我需要将它们全部组合成一个背景 使用 CSS3 的多背景功能 我编写了这个混合来生成多个背景 它基于 mixin在这篇文
  • 使用本机 JavaScript 获取过渡中的 CSS 值

    这个问题之前被问过 但答案使用了 jQuery here https stackoverflow com q 8920934 3186555 因此 我将调整问题以专门询问native解决方案 to 最小化依赖关系 假设您有一个 div 然后
  • div Hello div div Howdy dere pardner div div div 我明白它的作用 但为什么叫这个名字both 什么是both mean 两者的意思是 一组两件事中的每一项 左 和 右 两件事
  • 删除

    好的 我有一个小菜单栏 菜单内的三个元素还有更多的子菜单 但是菜单栏中的元素之间有不必要的间距 而且我创建的子菜单有不必要的背景宽度 我在代码中将其涂成白色以使读者理解 由于这种不必要的宽度 即使鼠标悬停在不可见的宽度上 在本例中为白色 本
  • 如何修复“没有这样的文件或目录,lstat 'scss/'”?

    我正在尝试遵循 youtube 上的简单教程他尝试使用终端运行 npm 脚本 sass 文件 当我执行命令时npm 运行 sass显示错误消息错误 ENOENT 没有这样的文件或目录 lstat scss 我认为问题在于文件的路径或文件的权
  • 单击导航项锚链接时如何关闭切换菜单

    请看我的FIDDLE http jsfiddle net ayhpp8ax 我有一个带有 响应式 导航菜单 带有指向页面上元素的锚链接 的 1 页网站 当浏览器视口小于特定宽度 在我的情况下为 767px 时 使用此 javascript
  • 使用 python 在一个 html 页面中显示分割数据框的 HTML 代码

    我是 html css 新手 所以对以 html 格式显示的数据有疑问 我有一个很长的列表 我想将其拆分并以 html 格式显示为两个单独的列 例如 而不是 Col1 Col2 1 a 2 a 3 a 4 a 5 b 6 b 7 b 8 b
  • html 电子邮件内的背景图像 css - Gmail 不支持

    我想向我的用户发送如下所示的带有背景图像 css 的 html 正文电子邮件 div style width 500px height 1000px background color black background image none
  • 浮动图像周围具有最小列宽的流动文本

    我想要一种方法来防止流动文本列变得太窄 例如 在一列 HTML 文本中 有一个图像浮动到左侧 正如预期的那样 文本沿着图像周围的列的右侧向下流动 但是 如果图像几乎与列一样宽 则文本最终会非常窄 在这种情况下 我希望文本简单地not流过图像
  • 如何在Yii框架中向Form添加类?

    我在 Yii 中有一个表单 我想向该表单添加一个类
  • javascript 选择自定义光标 (svg)

    我正在动态地将光标更改为悬停时的本地 svg element on mouseover function this css cursor url svgs pointer svg 9 30 auto 工作正常 但我想选择该 svg 来操纵其
  • 合并 2 个大型 CSS 文件的有效方法

    我正在寻找一个可以合并 2 个大型 CSS 文件的工具 到目前为止我尝试过的所有方法 例如CSSMerge 都没有成功 其中一些只是随机删除属性 其他人则因 webkit 和 moz 等非标准属性而窒息 并给我错误 我还需要保留每条规则大小
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL

随机推荐

  • google api 错误 - 无法让 google 登录正常工作

    我有一个应用程序需要访问 Google Fit Api 我可以弹出谷歌登录窗口 但下一个屏幕 请求我的数据类型 TYPE STEP COUNT DELTA AGGREGATE STEP COUNT DELTA 权限的屏幕不会显示 一旦我选择
  • 为什么当我想使用 EF Power 工具查看我的模型时出现错误?

    我首先使用 EF Code 然后通过 vs2010 中的 EF 4 x DbContext Fluent Generator for c 扩展生成我的模型 但是当我想通过 EF Power 工具查看我的实体模型时 我收到此错误 序列不包含匹
  • C++ 不同类型模板化类的显式模板化函数实例化

    我正在尝试在类型 T 的模板化类中显式实例化类型 U 的模板化函数 下面的代码生成警告 并且链接器找不到显式实例化ReinterpretAs 任何人都可以发现错误或建议如何执行此操作吗 我使用的是VC 2010 template
  • Bootstrap:在模式对话框中,如何使下拉菜单扩展到对话框之外?

    示例代码 http jsfiddle net vpg5g http jsfiddle net vpg5g 我想让从按钮下拉的菜单扩展到模式的边框上 如您所见 当前状态无法使用 有什么方法可以实现这一目标吗 模式不允许任何溢出 您可以使用以下
  • document.getElementsByTagName 在 vbscript 中工作吗?

    嗯 它有效 只是没有产生任何有价值的东西 elems document getElementById itemsTable getElementsByTagName TR for j 0 to ubound elems 1 stuff ne
  • 如何直接从内存中显示 webBrowser 控件中的图像?

    如何直接从内存而不是硬盘在 webBrowser 控件中显示图像 当我使用 RAM Disk 软件创建虚拟驱动器时 可以寻址图像源来加载它 如下所示 img src Z image jpg 表示 Z 是 RAM 磁盘驱动器 是否可以在 NE
  • css 中 ?v=2 是什么意思? [复制]

    这个问题在这里已经有答案了 可能的重复 将 v 1 附加到链接和脚本标记中的 CSS 和 Javascript URL 有何作用 https stackoverflow com questions 3466989 what does app
  • Admob插页式显示黑屏

    最近 我在使用 admob 显示插页式广告时遇到黑屏 这就是我正在谈论的屏幕 有时它运行良好并正确显示广告 这是我使用的代码 Class variable private InterstitialAd oInterstitialAd nul
  • 为什么 sleep 函数睡眠不一致?

    import time from time import sleep from datetime import datetime while True print datetime now strftime Y m d H M S slee
  • C# 属性覆盖Set方法

    我有一个如下所示的班级 当有人设置值时 我想覆盖 学校 国家 等 属性的设置值 我不想更改学生班级 但我需要这样做在基类中并将其用作通用方法 public class Student BaseClass public String Scho
  • 使用 rCharts 添加到图表中所有数据点的唯一链接

    我正在使用 rCharts 创建一个散点图 显示我随时间计算的评分 我有每个单独数据点 评级 的更多信息 并且希望图表上的每个数据点链接到一个独特的页面 其中包含有关该特定数据点的更多信息 例如 我希望能够将鼠标悬停在图表上的第一个数据点上
  • 如何在 Youtube Android Player API 中启用纸板模式?

    我想在我的应用程序中以纸板模式观看 Youtube 的 360 度视频 该模式将视频分成两半 供 Google 纸板中的两个镜头使用 就像在 Youtube 应用程序中一样 我正在使用适用于 Android 的 Youtube 播放器 AP
  • Android Studio渲染问题

    我在用着安卓工作室0 2 3当打开一个活动布置通常 预览应该出现在右侧 以便我可以在之间切换Text and Design模式 这应该再次显示布局的预览 但当我进入时 右侧也没有显示预览text模式也不在design模式 我刚刚收到错误re
  • JMeter在HTTP请求中使用beanshell变量

    我是这里的绝对菜鸟 我的意思是JAVA 花了几个小时寻找解决方案 现在我只想开枪自己 我想在 beanshell 断言中创建一个字符串 该字符串位于 HTTP 请求的正上方 在 beanshell 中我写道 String docid abc
  • 如何在 Mysql 中使用带有 BETWEEN 子句的字母数字字段?

    我有一个包含字段名称为 mgrs 的表 存储在 mgrs 字段中的值类似于 42SWC227821555 可能包含更多字符 并且可能包含小写字母 现在我想搜索两个经理之间的记录 那么我该怎么做呢 我可以先将 mgrs 值转换为整数 然后在
  • 从 Matlab 创建的 jar 文件返回值

    我有一个 Matlab 代码 它最终计算出索引向量 我使用库编译器将 matlab 代码编译为 java 包 jar 文件 我导出了 jar 文件以便在我的主 Java 项目中运行它 包类的名称是 Epidemic 我导入了 jar 文件
  • 无法连接到 BLE 设备

    尝试将 Android 手机连接到某种不寻常的非标准 BLE 设备 血压监测仪 数据点 我的程序可以正常连接并读取其他 BLE 设备 我的程序在 BLE 扫描中看到设备 但无法连接 相反 我立即获得 已断开连接 状态 并带有通用 GATT
  • attributeSubstringFromRange 越界问题

    我有一个 NSMutableAttributedString 我需要从中获取子字符串 我使用以下代码来获取子字符串 startIndex 和 endIndex 是两个长变量 NSMutableAttributedString current
  • 一个 git 子模块如何添加特定提交并将其记录在 .modules 文件中?

    理想情况下我想要 modules文件具有我想要使用的确切提交并且不更改它 除非我告诉它 例如使用git submodule init
  • 如何使用 FOP 在 XML-FO 中指定 2ch 缩进

    我正在尝试在 XML FO 文档中使用固定宽度字体创建两个字符的缩进 我正在使用 FOP 进行翻译 不幸的是 当我指定像这样的长度时 2ch FOP 产生以下错误消息 ERROR PropertyMaker Unknown length u