获得元数据| JavaScript

如何从“name”表中读取字体元数据?

您可以使用 AsposeFontGetInfo 函数从 TrueType 或 OpenType 字体的“name”表中读取记录。

相应的枚举用于指示数组中每个记录的值。该函数返回这些枚举的名称。

因此, TtfNameTableNameId

TtfNameTablePlatformId 用于 nameIdplatformId

TtfNameTableMacPlatformSpecificId

TtfNameTableMSPlatformSpecificId,或者

TtfNameTableUnicodePlatformSpecificId 用于 platformSpecificId,以及

TtfNameTableMacLanguageId,或者

TtfNameTableMSLanguageId 用于 languageId 值。

获取元数据的示例

  1. 创建一个“FileReader”对象。
  2. 运行 AsposeFontGetInfo 函数。
  3. 接下来,如果 json.errorCode 的值为 0,则可以获取结果数据。如果 json.errorCode 参数不等于 0,则表示文件中存在错误,错误信息将包含在 json.errorText 中。
  4. 生成的 JSON 对象包含一个 records 数组。每个记录包含 NameIdPlatformIdPlatformSpecificIdLanguageIdInfo 字段,其中包含字体 name 表中的信息。
 1  var ffileFontGetInfo = function (e) {
 2    const file_reader = new FileReader();
 3    file_reader.onload = (event) => {
 4      const json = AsposeFontGetInfo(event.target.result, e.target.files[0].name);
 5      if (json.errorCode == 0) {
 6        document.getElementById('output').textContent = "Name records count: " + json.records.length;
 7        for (let recordIndex = 0; recordIndex < json.records.length; recordIndex++) 
 8			document.getElementById('output').textContent += " " + "\n"
 9													     + "NameId : " + json.records[recordIndex].NameId
10                                                         + ";  PlatformId : " + json.records[recordIndex].PlatformId
11                                                         + ";  PlatformSpecificId : " + json.records[recordIndex].PlatformSpecificId
12                                                         + ";  LanguageId : " + json.records[recordIndex].LanguageId
13                                                         + ";  Info : " + json.records[recordIndex].Info;
14      }
15      else document.getElementById('output').textContent = json.errorText;
16    }
17    file_reader.readAsArrayBuffer(e.target.files[0]);
18  }

或使用Web Worker:

 1<script type="text/javascript">
 2
 3  /*Create Web Worker*/
 4  const AsposeFontWebWorker = new Worker("AsposeFontforJS.js");
 5  AsposeFontWebWorker.onerror = evt => console.log(`Error from Web Worker: ${evt.message}`);
 6  AsposeFontWebWorker.onmessage = evt => document.getElementById('output').textContent = 
 7    (evt.data == 'ready') ? 'loaded!' :
 8      (evt.data.json.errorCode == 0) ? "Name records count: " + evt.data.json.records.length + 
 9										evt.data.json.records.reduce((ret, a) => ret +
10										    "\nNameId : " + a.NameId
11						                  + "; PlatformId : " + a.PlatformId
12						                  + "; PlatformSpecificId : " + a.PlatformSpecificId
13						                  + "; LanguageId : " + a.LanguageId
14						                  + "; Info : " + a.Info,"") :
15        `Error: ${evt.data.json.errorText}`;
16
17  /*Event handler*/
18  var ffileFontGetInfo = function (e) {
19    const file_reader = new FileReader();
20    file_reader.onload = (event) => {
21      var transfer = [event.target.result];
22      var params = [event.target.result, e.target.files[0].name];
23      return AsposeFontWebWorker.postMessage({ "operation": "AsposeFontGetInfo", "params": params }, transfer);
24    }
25    file_reader.readAsArrayBuffer(e.target.files[0]);
26  }
27
28</script>

如何获取解决方案?

如果您需要此库,请访问 Aspose.Font for JavaScript*。您可以在那里找到该解决方案的更多功能。您可以从那里下载免费试用版或购买完整产品。

如果您还有任何问题或疑问,请随时在 免费支持论坛*Aspose.Font.产品系列* 版块发帖,我们的支持团队将在几个小时内为您解答所有问题。

此外,请查看我们的 字体元数据 跨平台应用程序,以全面了解其功能以及如何使用 API 创建您自己的应用程序。