【问题标题】:Scrape a web page which uses custom font using python使用 python 抓取使用自定义字体的网页
【发布时间】:2019-04-04 03:35:53
【问题描述】:

我正在尝试抓取这个webpage,它使用自定义字体以梵文呈现文本。我有网页中使用的字体的 ttf 文件。

我是否可以使用 ttf 文件抓取该网站并使用 Python(如果没有,任何语言)将内容编码为 un​​icode?

他们使用的字体是iitmsans.ttf from http://www.acharya.gen.in:8080/fonts/iitmfonts.php

【问题讨论】:

  • TTF 文件没有显示这些字形映射到哪个 Unicode 代码点。您需要创建一个表,其中包含从每个字符代码到其对应的 Unicode 代码点(也称为编码)的映射。
  • 对于我来说,页面只呈现为 ½£ ÂO¤âÔOOd[kOÛOÓdÓOØO¯ 等。
  • 这应该代表天城文吗?它是否有可能实际使用(类似)ISCII 或其他一些现有编码?
  • 文本是梵文。它正在使用 iitmsans 字体。
  • acharya.gen.in:8080/fonts/iitmfonts.php 表示他们正在使用应该与 ISO-8859-1 兼容的自定义编码。他们是非营利组织,因此理想情况下,他们将拥有一份包含有关编码信息的公共文档。否则,您将不得不手动重建编码。我再说一遍,字体没有任何帮助(除非您可以渲染地图以帮助您查看字形的外观,以便您可以尝试在 Unicode 图表中找到它们)。

标签: python web-scraping truetype


【解决方案1】:

不,您可能需要做一些手动工作才能为 Python 创建编码。 TTF 文件不包含有关 Unicode 映射 (it could 的信息,但它并不常见,而这个不包含)。

查看http://bluejamesbond.github.io/CharacterMap/ 中的字体,我看到许多梵文字形,但我不知道它们的名称,也不知道在绘制它们时有哪些常见或允许的变体,因此我可能无法轻松地在 Unicode 中为您找到相同的字形。但我认出了字符代码 65 (0x41) 上的“om”字形 U+0950,因此我可以贡献您编码中的第一项:

{
 # ...
 0x41: '\u0950',
 # ...
}

对字体中的所有其他字形执行此操作,您就有了可以在 Python 中使用的映射。一般指南在标准 codecs 模块的文档中,但您可能也想找到像 Custom Python Charmap Codec 这样的示例。

【讨论】:

  • 非常感谢@tripleee 的帮助。我有最后一个疑问。如何将文本转换为字符代码,以便使用映射器将其转换为 Unicode?​​span>
  • 页面上的文本个字符,你只需要(构造)一个编解码器来decode他们到Unicole。
  • 如果您可以提供一个包含映射的文本表,我们可能会弄清楚我们之间的其余部分。如果你在 Github 上,前几个要点将是一个好的开始。
猜你喜欢
  • 1970-01-01
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多