質問する

Revision history [back]

click to hide/show revision 1
最初のバージョン

おそらく仕様。現状対策はなし。

再現手順
1. Writerを起動する。
2. 現象が発生しているのを確認しやすくするため、Default Styleの西洋系言語に適用されるフォントサイズを20pt, 東洋系言語については10.5ptとする。
3. Default Styleが適用されている段落にで "a①あ①"の4文字を入力する
4. 2文字目の①は20ptで表示され、4文字目の①は10.5ptで表示される。

一般的にひらがなは東洋で用いられ、アルファベットは西洋で用いられる。もちろん実装上そういうデータがちゃんとコード上にある。じゃあ①は西洋?東洋?悩むと思う。答えを言うと、それらの情報が割り当てられていないので、周りの情報からどちらであるか決定することになる。東洋系の文字列の直後にあるときはその一部として扱われるため東洋系のフォントが適用され、西洋系の文字列の直後にあるときもその一部として扱われるので、西洋系のフォントが採用される。

http://opengrok.libreoffice.org/xref/core/editeng/source/editeng/impedit2.cxx?r=666787c4bcee7fc9a5de459eb18a1dcc1a4e350c#1653

むぅ。本当は積みゲー消費後に投稿予定だったのだが、クリアの見通しが全然立たないので見切り発車orz

おそらく仕様。現状対策はなし。

再現手順
1. Writerを起動する。
2. 現象が発生しているのを確認しやすくするため、Default Styleの西洋系言語に適用されるフォントサイズを20pt, 東洋系言語については10.5ptとする。
3. Default Styleが適用されている段落にで "a①あ①"の4文字を入力する
4. 2文字目の①は20ptで表示され、4文字目の①は10.5ptで表示される。

一般的にひらがなは東洋で用いられ、アルファベットは西洋で用いられる。もちろん実装上そういうデータがちゃんとコード上にある。じゃあ①は西洋?東洋?悩むと思う。答えを言うと、それらの情報が割り当てられていないので、周りの情報からどちらであるか決定することになる。東洋系の文字列の直後にあるときはその一部として扱われるため東洋系のフォントが適用され、西洋系の文字列の直後にあるときもその一部として扱われるので、西洋系のフォントが採用される。

http://opengrok.libreoffice.org/xref/core/editeng/source/editeng/impedit2.cxx?r=666787c4bcee7fc9a5de459eb18a1dcc1a4e350c#1653

検証環境:
Version: 5.3.3.1 (x64)
Build ID: 46360c72c4823cefeaa85af537fba22bd568da7e
CPU Threads: 4; OS Version: Windows 6.19; UI Render: default; Layout Engine: new;
Locale: en-US (ja_JP); Calc: group

むぅ。本当は積みゲー消費後に投稿予定だったのだが、クリアの見通しが全然立たないので見切り発車orz

おそらく仕様。現状対策はなし。

再現手順
1. Writerを起動する。
2. 現象が発生しているのを確認しやすくするため、Default Styleの西洋系言語に適用されるフォントサイズを20pt, 東洋系言語については10.5ptとする。
3. Default Styleが適用されている段落にで "a①あ①"の4文字を入力する
4. 2文字目の①は20ptで表示され、4文字目の①は10.5ptで表示される。

一般的にひらがなは東洋で用いられ、アルファベットは西洋で用いられる。もちろん実装上そういうデータがちゃんとコード上にある。じゃあ①は西洋?東洋?悩むと思う。答えを言うと、それらの情報が割り当てられていないので、周りの情報からどちらであるか決定することになる。東洋系の文字列の直後にあるときはその一部として扱われるため東洋系のフォントが適用され、西洋系の文字列の直後にあるときもその一部として扱われるので、西洋系のフォントが採用される。 ただし、最初の地点でそのような状態に陥ったときはデフォルト設定されている言語に従う。

http://opengrok.libreoffice.org/xref/core/editeng/source/editeng/impedit2.cxx?r=666787c4bcee7fc9a5de459eb18a1dcc1a4e350c#1653

検証環境:
Version: 5.3.3.1 (x64)
Build ID: 46360c72c4823cefeaa85af537fba22bd568da7e
CPU Threads: 4; OS Version: Windows 6.19; UI Render: default; Layout Engine: new;
Locale: en-US (ja_JP); Calc: group

むぅ。本当は積みゲー消費後に投稿予定だったのだが、クリアの見通しが全然立たないので見切り発車orz

おそらく仕様。現状対策はなし。

再現手順
1. Writerを起動する。
2. 現象が発生しているのを確認しやすくするため、Default Styleの西洋系言語に適用されるフォントサイズを20pt, 東洋系言語については10.5ptとする。
3. Default Styleが適用されている段落にで "a①あ①"の4文字を入力する Styleが適用されている段落に"a①あ①"の4文字を入力する
4. 2文字目の①は20ptで表示され、4文字目の①は10.5ptで表示される。

一般的にひらがなは東洋で用いられ、アルファベットは西洋で用いられる。もちろん実装上そういうデータがちゃんとコード上にある。じゃあ①は西洋?東洋?悩むと思う。答えを言うと、それらの情報が割り当てられていないので、周りの情報からどちらであるか決定することになる。東洋系の文字列の直後にあるときはその一部として扱われるため東洋系のフォントが適用され、西洋系の文字列の直後にあるときもその一部として扱われるので、西洋系のフォントが採用される。 ただし、最初の地点でそのような状態に陥ったときはデフォルト設定されている言語に従う。

http://opengrok.libreoffice.org/xref/core/editeng/source/editeng/impedit2.cxx?r=666787c4bcee7fc9a5de459eb18a1dcc1a4e350c#1653

検証環境:
Version: 5.3.3.1 (x64)
Build ID: 46360c72c4823cefeaa85af537fba22bd568da7e
CPU Threads: 4; OS Version: Windows 6.19; UI Render: default; Layout Engine: new;
Locale: en-US (ja_JP); Calc: group

むぅ。本当は積みゲー消費後に投稿予定だったのだが、クリアの見通しが全然立たないので見切り発車orz

おそらく仕様。現状対策はなし。

再現手順
1. Writerを起動する。
2. 現象が発生しているのを確認しやすくするため、Default Styleの西洋系言語に適用されるフォントサイズを20pt, 東洋系言語については10.5ptとする。
3. Default Styleが適用されている段落に"a①あ①"の4文字を入力する
4. 2文字目の①は20ptで表示され、4文字目の①は10.5ptで表示される。

一般的にひらがなは東洋で用いられ、アルファベットは西洋で用いられる。もちろん実装上そういうデータがちゃんとコード上にある。じゃあ①は西洋?東洋?悩むと思う。答えを言うと、それらの情報が割り当てられていないので、周りの情報からどちらであるか決定することになる。東洋系の文字列の直後にあるときはその一部として扱われるため東洋系のフォントが適用され、西洋系の文字列の直後にあるときもその一部として扱われるので、西洋系のフォントが採用される。 ただし、最初の地点でそのような状態に陥ったときはデフォルト設定されている言語に従う。ただし、最初の地点でそのような状態に陥ったとき、後続があるときはそれに従い、それすらないときはデフォルト設定されている言語に従う。

http://opengrok.libreoffice.org/xref/core/editeng/source/editeng/impedit2.cxx?r=666787c4bcee7fc9a5de459eb18a1dcc1a4e350c#1653

検証環境:
Version: 5.3.3.1 (x64)
Build ID: 46360c72c4823cefeaa85af537fba22bd568da7e
CPU Threads: 4; OS Version: Windows 6.19; UI Render: default; Layout Engine: new;
Locale: en-US (ja_JP); Calc: group

むぅ。本当は積みゲー消費後に投稿予定だったのだが、クリアの見通しが全然立たないので見切り発車orz

おそらく仕様。現状対策はなし。

再現手順
1. Writerを起動する。
2. 現象が発生しているのを確認しやすくするため、Default Styleの西洋系言語に適用されるフォントサイズを20pt, 東洋系言語については10.5ptとする。
3. Default Styleが適用されている段落に"a①あ①"の4文字を入力する
4. 2文字目の①は20ptで表示され、4文字目の①は10.5ptで表示される。

一般的にひらがなは東洋で用いられ、アルファベットは西洋で用いられる。もちろん実装上そういうデータがちゃんとコード上にある。じゃあ①は西洋?東洋?悩むと思う。答えを言うと、それらの情報が割り当てられていないので、周りの情報からどちらであるか決定することになる。東洋系の文字列の直後にあるときはその一部として扱われるため東洋系のフォントが適用され、西洋系の文字列の直後にあるときもその一部として扱われるので、西洋系のフォントが採用される。
http://opengrok.libreoffice.org/xref/core/editeng/source/editeng/impedit2.cxx?r=666787c4bcee7fc9a5de459eb18a1dcc1a4e350c#1653
ただし、最初の地点でそのような状態に陥ったとき、後続があるときはそれに従い、それすらないときはデフォルト設定されている言語に従う。

http://opengrok.libreoffice.org/xref/core/editeng/source/editeng/impedit2.cxx?r=666787c4bcee7fc9a5de459eb18a1dcc1a4e350c#1653 ただし、最初の地点でそのような状態に陥ったとき、後続があるときはそれに従い、それすらないときはデフォルト設定されている言語に従う。…ようにみえるんだけど、何故か後続があるときの挙動が再現できないんだよなあ 俺の環境で。

http://opengrok.libreoffice.org/xref/core/editeng/source/editeng/impedit2.cxx?r=666787c4bcee7fc9a5de459eb18a1dcc1a4e350c#1677

ところで、思いつきを一つ実験したら、中々面白い結果が得られたので追記。
オプション上で、ロケールが英語になっており、
Default Styleで西洋系と東洋系のフォントサイズをそれぞれ設定してあるとします。
で、最初の段落に"①"を入力しておきます。
このファイルを適当なファイル名で保存し、ロケールを日本語に切り替えてWriterを再起動。
すると、ファイルが再度開かれるわけですが、割り当てられるのが西洋から東洋に変化するので、この部分、文字のサイズが変わります。
例えば複数の国の研究者がLibreOfficeを用いて論文を書こうとファイルを共有したとすると…とか脳裏に浮かんだりします。まぁ単なる思考実験ですが。

検証環境:
Version: 5.3.3.1 (x64)
Build ID: 46360c72c4823cefeaa85af537fba22bd568da7e
CPU Threads: 4; OS Version: Windows 6.19; UI Render: default; Layout Engine: new;
Locale: en-US (ja_JP); Calc: group

むぅ。本当は積みゲー消費後に投稿予定だったのだが、クリアの見通しが全然立たないので見切り発車orz

おそらく仕様。現状対策はなし。

再現手順
1. Writerを起動する。
2. 現象が発生しているのを確認しやすくするため、Default Styleの西洋系言語に適用されるフォントサイズを20pt, 東洋系言語については10.5ptとする。
3. Default Styleが適用されている段落に"a①あ①"の4文字を入力する
4. 2文字目の①は20ptで表示され、4文字目の①は10.5ptで表示される。

一般的にひらがなは東洋で用いられ、アルファベットは西洋で用いられる。もちろん実装上そういうデータがちゃんとコード上にある。じゃあ①は西洋?東洋?悩むと思う。答えを言うと、それらの情報が割り当てられていないので、周りの情報からどちらであるか決定することになる。東洋系の文字列の直後にあるときはその一部として扱われるため東洋系のフォントが適用され、西洋系の文字列の直後にあるときもその一部として扱われるので、西洋系のフォントが採用される。 一般的にひらがなは東洋で用いられ、アルファベットは西洋で用いられる。もちろん実装上そういうデータがちゃんとコード上にある。じゃあ'①'は西洋?東洋?悩むと思う。答えを言うと、それらの情報が割り当てられていないので、周りの情報からどちらであるか決定することになる。東洋系の文字列の直後にあるときはその一部として扱われるため東洋系のフォントが適用され、西洋系の文字列の直後にあるときもその一部として扱われるので、西洋系のフォントが採用される。
http://opengrok.libreoffice.org/xref/core/editeng/source/editeng/impedit2.cxx?r=666787c4bcee7fc9a5de459eb18a1dcc1a4e350c#1653

ただし、最初の地点でそのような状態に陥ったとき、後続があるときはそれに従い、それすらないときはデフォルト設定されている言語に従う。…ようにみえるんだけど、何故か後続があるときの挙動が再現できないんだよなあ 俺の環境で。

http://opengrok.libreoffice.org/xref/core/editeng/source/editeng/impedit2.cxx?r=666787c4bcee7fc9a5de459eb18a1dcc1a4e350c#1677

こういう実装だから
"あa①"を入力しておいて"a"を消すと"①"のフォントサイズが変わります。

ところで、思いつきを一つ実験したら、中々面白い結果が得られたので追記。
オプション上で、ロケールが英語になっており、
Default Styleで西洋系と東洋系のフォントサイズをそれぞれ設定してあるとします。
で、最初の段落に"①"を入力しておきます。
このファイルを適当なファイル名で保存し、ロケールを日本語に切り替えてWriterを再起動。
すると、ファイルが再度開かれるわけですが、割り当てられるのが西洋から東洋に変化するので、この部分、文字のサイズが変わります。
例えば複数の国の研究者がLibreOfficeを用いて論文を書こうとファイルを共有したとすると…とか脳裏に浮かんだりします。まぁ単なる思考実験ですが。

検証環境:
Version: 5.3.3.1 (x64)
Build ID: 46360c72c4823cefeaa85af537fba22bd568da7e
CPU Threads: 4; OS Version: Windows 6.19; UI Render: default; Layout Engine: new;
Locale: en-US (ja_JP); Calc: group

むぅ。本当は積みゲー消費後に投稿予定だったのだが、クリアの見通しが全然立たないので見切り発車orz

おそらく仕様。現状対策はなし。 スタイルじゃなくて個別の文字の書式でフォントを西洋系と東洋系で同じもの を当てる、とかいう面倒くさい手順くらい?

再現手順
1. Writerを起動する。
2. 現象が発生しているのを確認しやすくするため、Default Styleの西洋系言語に適用されるフォントサイズを20pt, 東洋系言語については10.5ptとする。
3. Default Styleが適用されている段落に"a①あ①"の4文字を入力する
4. 2文字目の①は20ptで表示され、4文字目の①は10.5ptで表示される。

一般的にひらがなは東洋で用いられ、アルファベットは西洋で用いられる。もちろん実装上そういうデータがちゃんとコード上にある。じゃあ'①'は西洋?東洋?悩むと思う。答えを言うと、それらの情報が割り当てられていないので、周りの情報からどちらであるか決定することになる。東洋系の文字列の直後にあるときはその一部として扱われるため東洋系のフォントが適用され、西洋系の文字列の直後にあるときもその一部として扱われるので、西洋系のフォントが採用される。
http://opengrok.libreoffice.org/xref/core/editeng/source/editeng/impedit2.cxx?r=666787c4bcee7fc9a5de459eb18a1dcc1a4e350c#1653

ただし、最初の地点でそのような状態に陥ったとき、後続があるときはそれに従い、それすらないときはデフォルト設定されている言語に従う。…ようにみえるんだけど、何故か後続があるときの挙動が再現できないんだよなあ 俺の環境で。

http://opengrok.libreoffice.org/xref/core/editeng/source/editeng/impedit2.cxx?r=666787c4bcee7fc9a5de459eb18a1dcc1a4e350c#1677

こういう実装だから
"あa①"を入力しておいて"a"を消すと"①"のフォントサイズが変わります。

ところで、思いつきを一つ実験したら、中々面白い結果が得られたので追記。
オプション上で、ロケールが英語になっており、
Default Styleで西洋系と東洋系のフォントサイズをそれぞれ設定してあるとします。
で、最初の段落に"①"を入力しておきます。
このファイルを適当なファイル名で保存し、ロケールを日本語に切り替えてWriterを再起動。
すると、ファイルが再度開かれるわけですが、割り当てられるのが西洋から東洋に変化するので、この部分、文字のサイズが変わります。
例えば複数の国の研究者がLibreOfficeを用いて論文を書こうとファイルを共有したとすると…とか脳裏に浮かんだりします。まぁ単なる思考実験ですが。

検証環境:
Version: 5.3.3.1 (x64)
Build ID: 46360c72c4823cefeaa85af537fba22bd568da7e
CPU Threads: 4; OS Version: Windows 6.19; UI Render: default; Layout Engine: new;
Locale: en-US (ja_JP); Calc: group

むぅ。本当は積みゲー消費後に投稿予定だったのだが、クリアの見通しが全然立たないので見切り発車orz

おそらく仕様。現状対策はなし。 スタイルじゃなくて個別の文字の書式でフォントを西洋系と東洋系で同じもの を当てる、とかいう面倒くさい手順くらい?

再現手順
1. Writerを起動する。
2. 現象が発生しているのを確認しやすくするため、Default Styleの西洋系言語に適用されるフォントサイズを20pt, 東洋系言語については10.5ptとする。
3. Default Styleが適用されている段落に"a①あ①"の4文字を入力する
4. 2文字目の①は20ptで表示され、4文字目の①は10.5ptで表示される。

一般的にひらがなは東洋で用いられ、アルファベットは西洋で用いられる。もちろん実装上そういうデータがちゃんとコード上にある。じゃあ'①'は西洋?東洋?悩むと思う。答えを言うと、それらの情報が割り当てられていないので、周りの情報からどちらであるか決定することになる。東洋系の文字列の直後にあるときはその一部として扱われるため東洋系のフォントが適用され、西洋系の文字列の直後にあるときもその一部として扱われるので、西洋系のフォントが採用される。
http://opengrok.libreoffice.org/xref/core/editeng/source/editeng/impedit2.cxx?r=666787c4bcee7fc9a5de459eb18a1dcc1a4e350c#1653

//// ここから補足

http://opengrok.libreoffice.org/xref/core/i18npool/source/breakiterator/breakiteratorImpl.cxx#455

平仮名と片仮名はUBLOCK_CJK_RADICALS_SUPPLEMENTとUBLOCK_HANGUL_SYLLABLESの間にあるから東洋系

これらに含まれない①は

http://icu-project.org/apiref/icu4c/uchar_8h.html#a19f1662c9c33c31593612d05777ea901

http://icu-project.org/apiref/icu4c471/uscript_8h.html#a5036ff9ca2a7f1d2bde07875bb235df0

http://www.unicode.org/Public/5.0.0/ucd/Scripts.txt

2460..249B ; Common # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP ⇒ COMMONだから0で

http://opengrok.libreoffice.org/xref/core/i18nutil/source/utility/unicode.cxx#132 ⇒ WEAK ////

ただし、最初の地点でそのような状態に陥ったとき、後続があるときはそれに従い、それすらないときはデフォルト設定されている言語に従う。…ようにみえるんだけど、何故か後続があるときの挙動が再現できないんだよなあ 俺の環境で。

http://opengrok.libreoffice.org/xref/core/editeng/source/editeng/impedit2.cxx?r=666787c4bcee7fc9a5de459eb18a1dcc1a4e350c#1677

こういう実装だから
"あa①"を入力しておいて"a"を消すと"①"のフォントサイズが変わります。

ところで、思いつきを一つ実験したら、中々面白い結果が得られたので追記。
オプション上で、ロケールが英語になっており、
Default Styleで西洋系と東洋系のフォントサイズをそれぞれ設定してあるとします。
で、最初の段落に"①"を入力しておきます。
このファイルを適当なファイル名で保存し、ロケールを日本語に切り替えてWriterを再起動。
すると、ファイルが再度開かれるわけですが、割り当てられるのが西洋から東洋に変化するので、この部分、文字のサイズが変わります。
例えば複数の国の研究者がLibreOfficeを用いて論文を書こうとファイルを共有したとすると…とか脳裏に浮かんだりします。まぁ単なる思考実験ですが。

検証環境:
Version: 5.3.3.1 (x64)
Build ID: 46360c72c4823cefeaa85af537fba22bd568da7e
CPU Threads: 4; OS Version: Windows 6.19; UI Render: default; Layout Engine: new;
Locale: en-US (ja_JP); Calc: group

むぅ。本当は積みゲー消費後に投稿予定だったのだが、クリアの見通しが全然立たないので見切り発車orz

おそらく仕様。現状対策はなし。 スタイルじゃなくて個別の文字の書式でフォントを西洋系と東洋系で同じもの を当てる、とかいう面倒くさい手順くらい?

再現手順
1. Writerを起動する。
2. 現象が発生しているのを確認しやすくするため、Default Styleの西洋系言語に適用されるフォントサイズを20pt, 東洋系言語については10.5ptとする。
3. Default Styleが適用されている段落に"a①あ①"の4文字を入力する
4. 2文字目の①は20ptで表示され、4文字目の①は10.5ptで表示される。

一般的にひらがなは東洋で用いられ、アルファベットは西洋で用いられる。もちろん実装上そういうデータがちゃんとコード上にある。じゃあ'①'は西洋?東洋?悩むと思う。答えを言うと、それらの情報が割り当てられていないので、周りの情報からどちらであるか決定することになる。東洋系の文字列の直後にあるときはその一部として扱われるため東洋系のフォントが適用され、西洋系の文字列の直後にあるときもその一部として扱われるので、西洋系のフォントが採用される。
http://opengrok.libreoffice.org/xref/core/editeng/source/editeng/impedit2.cxx?r=666787c4bcee7fc9a5de459eb18a1dcc1a4e350c#1653

//// ここから補足

http://opengrok.libreoffice.org/xref/core/i18npool/source/breakiterator/breakiteratorImpl.cxx#455

平仮名と片仮名はUBLOCK_CJK_RADICALS_SUPPLEMENTとUBLOCK_HANGUL_SYLLABLESの間にあるから東洋系

これらに含まれない①は

http://icu-project.org/apiref/icu4c/uchar_8h.html#a19f1662c9c33c31593612d05777ea901

http://icu-project.org/apiref/icu4c471/uscript_8h.html#a5036ff9ca2a7f1d2bde07875bb235df0

http://www.unicode.org/Public/5.0.0/ucd/Scripts.txt

2460..249B ; Common # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP ⇒ COMMONだから0で

http://opengrok.libreoffice.org/xref/core/i18nutil/source/utility/unicode.cxx#132 ⇒ WEAK WEAK

ここまで ////

ただし、最初の地点でそのような状態に陥ったとき、後続があるときはそれに従い、それすらないときはデフォルト設定されている言語に従う。…ようにみえるんだけど、何故か後続があるときの挙動が再現できないんだよなあ 俺の環境で。

http://opengrok.libreoffice.org/xref/core/editeng/source/editeng/impedit2.cxx?r=666787c4bcee7fc9a5de459eb18a1dcc1a4e350c#1677

こういう実装だから
"あa①"を入力しておいて"a"を消すと"①"のフォントサイズが変わります。

ところで、思いつきを一つ実験したら、中々面白い結果が得られたので追記。
オプション上で、ロケールが英語になっており、
Default Styleで西洋系と東洋系のフォントサイズをそれぞれ設定してあるとします。
で、最初の段落に"①"を入力しておきます。
このファイルを適当なファイル名で保存し、ロケールを日本語に切り替えてWriterを再起動。
すると、ファイルが再度開かれるわけですが、割り当てられるのが西洋から東洋に変化するので、この部分、文字のサイズが変わります。
例えば複数の国の研究者がLibreOfficeを用いて論文を書こうとファイルを共有したとすると…とか脳裏に浮かんだりします。まぁ単なる思考実験ですが。

検証環境:
Version: 5.3.3.1 (x64)
Build ID: 46360c72c4823cefeaa85af537fba22bd568da7e
CPU Threads: 4; OS Version: Windows 6.19; UI Render: default; Layout Engine: new;
Locale: en-US (ja_JP); Calc: group

むぅ。本当は積みゲー消費後に投稿予定だったのだが、クリアの見通しが全然立たないので見切り発車orz