Doxygen の文字化け
現在の最新版 Doxygen 1.8.6 で不可解な文字化けに遭遇したのでメモ。
/** * @file * This header file provides useful functions for handling UTF-8 and UTF-16 string. * * @section VALID_UTF8 Valid UTF-8 sequences. * * <pre> * +--------------------+--------+--------+--------+--------+ * | Code point | byte 1 | byte 2 | byte 3 | byte 4 | * +--------------------+--------+--------+--------+--------+ * | U+000000..U+00007F | 00..7F | | | | * | U+000080..U+0007FF | C2..DF | 80..BF | | | * | U+000800..U+000FFF | E0 | A0..BF | 80..BF | | * | U+001000..U+00CFFF | E1..EC | 80..BF | 80..BF | | * | U+00D000..U+00D7FF | ED | 80..9F | 80..BF | | * | U+00D800..U+00DFFF | Reserved area for Surrogate Pair | * | U+00E000..U+00FFFF | EE..EF | 80..BF | 80..BF | | * | U+010000..U+03FFFF | F0 | 90..BF | 80..BF | 80..BF | * | U+040000..U+0FFFFF | F1..F3 | 80..BF | 80..BF | 80..BF | * | U+100000..U+10FFFF | F4 | 80..8F | 80..BF | 80..BF | * +--------------------+--------+--------+--------+--------+ * </pre> * * This is specified by RFC-3629. The following BNF is RFC-3629 specified. * * <pre> * UTF8-octets = *( UTF8-char ) * UTF8-char = UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4 * UTF8-1 = %x00-7F * UTF8-2 = %xC2-DF UTF8-tail * UTF8-3 = %xE0 %xA0-BF UTF8-tail / %xE1-EC 2( UTF8-tail ) / * %xED %x80-9F UTF8-tail / %xEE-EF 2( UTF8-tail ) * UTF8-4 = %xF0 %x90-BF 2( UTF8-tail ) / %xF1-F3 3( UTF8-tail ) / * %xF4 %x80-8F 2( UTF8-tail ) * UTF8-tail = %x80-BF * </pre> * * - RFC-3629: UTF-8, a transformation format of ISO 10646 * * @section VALID_UTF16 Valid UTF-16 sequences. * * <pre> * +--------------------+------------+------------+ * | Code point | SP High | SP Low | * +--------------------+------------+------------+ * | U+000000..U+00D7FF | | 0000..D7FF | * | U+00E000..U+00FFFF | | E000..FFFF | * | U+010000..U+10FFFF | D800..DBFF | DC00..DFFF | * +--------------------+------------+------------+ * </pre> */
こんな感じのヘッダドキュメントを Doxygen で出力しながら確認していたところ、どうやっても最後のテーブルがずれてしまう。
これは、ドキュメントの最後の段落に表っぽいものがあると、具体的には -+ という部分が —+ という文字に置き換わってしまうためのようである。置き換わった後の文字は U+E28094 で "EM DASH" という名前の数あるダッシュのひとつ。何故置き換わってしまうのかは不明。pre タグに入っているかどうかは関係なく、最後の段落にあるというのが問題。
この問題は以下の方法で回避可能。
- 最後を避ける
- 表を pre タグではなく Markdown 記法にする
とりあえず、最後を避ける事で以下のように治った。