LoginSignup
7
5

More than 5 years have passed since last update.

フォントからUnicode符号の一覧をコマンドラインで取得する

Last updated at Posted at 2015-01-02

概要

ttfファイルから利用可能な文字とそのUnicode符号の一覧を抽出します。

ユースケース

  • ImageMagickなどでアイコンフォントから画像を生成したいが、アイコンに対応するUnicode符号がわからない。
  • OSXのFontbookなどで各文字のUnicode符号は閲覧できるが、一覧が取得できずに困っている。

インストール

pip install fonttools

使い方

ttx -t cmap [フォント名.ttf]

フォント名.ttxが出力されます。

GitHubのアイコンフォントOcticonsで使ってみます。

実行

ttx -t cmap octicons.ttf

出力例

code0xの後ろがUnicode符号のU+の後ろの部分です。nameがどのアイコンに対応するかはWebでocticons.css使う際の説明を見るとわかります。

<?xml version="1.0" encoding="ISO-8859-1"?>
<ttFont sfntVersion="\x00\x01\x00\x00" ttLibVersion="2.4">

  <cmap>
    <tableVersion version="0"/>
    <cmap_format_4 platformID="0" platEncID="3" language="0">
      <map code="0x0" name=".notdef"/><!-- &lt;control> -->
      <map code="0x2665" name="heart"/><!-- BLACK HEART SUIT -->
      <map code="0x26a1" name="zap"/><!-- HIGH VOLTAGE SIGN -->
      <map code="0xf000" name="light-bulb"/><!-- Private Use -->
      <map code="0xf001" name="repo"/><!-- Private Use -->
      <map code="0xf002" name="repo-forked"/><!-- Private Use -->
      <map code="0xf005" name="repo-push"/><!-- Private Use -->
      <map code="0xf006" name="repo-pull"/><!-- Private Use --><map code="0xf0d4" name="plug"/><!-- Private Use -->
      <map code="0xf0d6" name="circuit-board"/><!-- Private Use -->
      <map code="0xf0d7" name="mortar-board"/><!-- Private Use -->
      <map code="0xf0d8" name="law"/><!-- Private Use -->
      <map code="0xf27c" name="device-desktop"/><!-- Private Use -->
    </cmap_format_4>
  </cmap>

</ttFont>
  • FontTools(ttx)はフォントテーブルの置き換えもできます。Octiconsはアイコンが普段使わない文字にマップされているのでアルファベットなど入力しやすい文字に置き換えるとImageMagickでの取り扱いが楽かもしれません。

その他

PythonやRubyでも取得できるようです。

7
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5