logo
 
WebChain/2 Previous Ramdom Jump WebChain/2 Home Next
 メインメニュー
 サイト内検索

検索オプション
 ログイン
ユーザID または e-mail:

パスワード:

IDとパスワードを記憶

パスワード紛失

新規登録
 IRC(チャット)
#OS/2:*.jp
楽しみ方はこの辺参照.
フォーラム一覧   -   トピック一覧
   アプリ
     「UTF-8 encoded pages without "lang=" specification fails to use proper font for that national langua
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
jjsuwa
投稿日時: 04/07/08 12:43
Home away from home
登録日: 03/01/26
居住地: Kami-Youga, Setagaya Ward, Tokyo, Japan, Earth, Sol, MilkyWay
投稿: 197
Re: langを変更
てゆーかさ、素直に考えたら、

存在するOS/2 NLVの分だけ、そのNLVでPM環境に突っ込むnative表現のOS/2 ULS cpnameとSBCS/DBCS判定フラグのテーブルをlang=xxをキーに持てばいいだけではないか、と思うんですが。
# テーブルにないlangは現行codepageへの変換でお茶を濁すとw
# フォントはfont pref.で解決

まーなんかMike氏をしてクソッタレと言わしめるだけの何かがあるんでしょうけどね。
OS/2 ULSでMozilla Unicode→Latin-1変換すると出てこない文字があるとか。
それとも非Latin-1な文字が書かれている(本来はLatin-1であるべき、lang抜きだとLatin-1でしたっけ?)文書が余りにも多く、そして他プラットフォームMozillaだと平然と表示できるのに何でWarpzillaだと表示できねぇんだよ とかゆー苦情が相次いだとか。
orca
投稿日時: 04/07/08 15:22
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Re: langを変更
ただ、そのnative表現をlang情報によって切り替えると。
# 同様にUnicode nativeな環境であってもglyph描画にはlang情報が必要になります(将来のUnicode規格でlang情報埋込みとか取り入れる )


langてゆーのが, 環境変数 LANG (=ロケールの設定) ならば, そのとおりだと思うです。 Shift_JIS なのか EUC-JP なのか (OS/2日本語版は前者でしかありえないけど) を決定するもののこと。

HTMLの lang属性と Unicodeとの関係では, これしか見当たらなかったでし。→ 「HTMLの言語情報に関する覚え書き
将来の Unicodeってのも見つからなかったれす。

で, コレは本来, 何らかのプロセッサーで, 以下の部分を犬の種類と間違えたりしない, 日本語の文法が違うとかゆったりしない, そんなことのためのものだと思うです。 あるいは音声読み上げで, その部分を関西弁のアクセントでアレしたりとか。
<span lang="ja-関西弁">ちゃうちゃう</span>
ただし, コレ(↑)はその使い方の説明として lang属性を勝手にアレしたものなので, ホントにそーゆー記述しても多分動かないけど。

「――」がlang=enに書かれてたらnative表現はSJISでなくLatin-1あたり、フォントもlang=en用のやつ、そしてもちろんSBCS属性。

σ(^^) のトコでは, ちゃんと全角サイズで見えてます。 ただし, copy&pasteすると半角になるけど。

やはりちょっとした(しかし決定的に重要)ところで手抜きか勘違いがどこかに入ってるんでしょうね >mozilla for OS/2

たぶん, そんな感じだと思うけど, 相手が相手だけにホントにどーにもならない問題って可能性も 捨てきれなかったりして。

| ソレはソレでよいと思うです。
なんかあんましよくないと思うです。lang情報がnative表現に反映されてないし。
# lang=enをLatin-1とするならそれでOK、lang=jaをShift_JISとするならしっかり変換してくれないと

「文字化けせずに, ここに現れてるイメージが表示されれば」と書いている通りです。 "―" も全角サイズで表示できてるし, 2バイトコードにしろ 1バイトコードにしろ, 変換した内部コードがちゃんと表示されるものなら構わないカナ, と。
問題は, ソースを取り出すとき半角になってることだけど, 化けるよりもましなので, (σ(^^) にとっては) 「ソレはソレで構わない」カモ。
jjsuwa
投稿日時: 04/07/08 16:40
Home away from home
登録日: 03/01/26
居住地: Kami-Youga, Setagaya Ward, Tokyo, Japan, Earth, Sol, MilkyWay
投稿: 197
Re: langを変更
ここでのlangはHTTP headerとかHTML metaとかのlang、言語情報のことでつ。

あとUnicode→native表現と言語情報との関係は
http://www.asahi-net.or.jp/~hc3j-tkg/unicode/
の最後の方の「感想」に書かれていることが私の言いたいことを的確にあらわしてます。
jjsuwa
投稿日時: 04/07/08 16:51
Home away from home
登録日: 03/01/26
居住地: Kami-Youga, Setagaya Ward, Tokyo, Japan, Earth, Sol, MilkyWay
投稿: 197
Re: langを変更
ええーっと…

| 引用:「――」がlang=enに書かれてたらnative表現はSJISでなくLatin-1あたり、フォントもlang=en用のやつ、そしてもちろんSBCS属性。
| σ(^^) のトコでは, ちゃんと全角サイズで見えてます。 ただし, copy&pasteすると半角になるけど。
<中略>
| 問題は, ソースを取り出すとき半角になってることだけど, 化けるよりもましなので, (σ(^^) にとっては) 「ソレはソレで構わない」カモ。

私が言いたかったのは、
「現状とりあえず表示されてる/されてない論」
ではなくて
「こうすべきだ論」
なのでした。

文書ソースの文字コードは内部でどー持ってようが変換前後で齟齬を来たさず最終的にあってれば(←多分に怪しいけどね^^;;)一向に構わないですが、(文書ソースの)言語情報は最初から最後までしっかり保持してくれないと文字コード変換もグリフ取得もltr/rtlもnative GUI要素の表示設定も全てがうまくできません。
jjsuwa
投稿日時: 04/07/08 17:04
Home away from home
登録日: 03/01/26
居住地: Kami-Youga, Setagaya Ward, Tokyo, Japan, Earth, Sol, MilkyWay
投稿: 197
Re: langを変更
どんどん書くw

| で, コレは本来, 何らかのプロセッサーで, 以下の部分を犬の種類と間違えたりしない, 日本語の文法が違うとかゆったりしない, そんなことのためのものだと思うです。 あるいは音声読み上げで, その部分を関西弁のアクセントでアレしたりとか。
| <span lang="ja-関西弁">ちゃうちゃう</span>

例えば。文書エンコーディングはUTF-8として、

HTML全体はlang=enで一部分はlang=jpだったら、
最終的なGUI表現は表示の殆どはlang=enに対応したnative表現文字コードをlang=en設定にあるフォント、lang=en設定にある綴方向で、必要であればSBCS設定されたwidgetで描画/構成され、
lang=jaな一部分はlang=jpに対応したnative表現文字コードをlang=ja設定にあるフォント、lang=ja設定にある綴方向で、必要であればDBCS/MBCS設定されたwidgetで描画/構成**されなければならない**

と思うんですが。
そして<span>lang属性なんてのはもろその為にあるんだと思うんですよ。

# ja-関西弁とjaではnative表現文字コードも綴方向も同じで両方ともDBCSでフォント設定もJapaneseを共用するから表示上は同じですね。意味合いだけ。
# もし昔の横書きをrtlで綴るja-??が存在したとしてそれが指定されたらそこだけは右から左に綴る必要がありますね。フォントとかは同じであっても。
orca
投稿日時: 04/07/09 07:46
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Re: langを変更
文書ソースの文字コードは内部でどー持ってようが変換前後で齟齬を来たさず最終的にあってれば(←多分に怪しいけどね^^;;)一向に構わないですが、 (文書ソースの)言語情報は最初から最後までしっかり保持してくれないと文字コード変換もグリフ取得もltr/rtlもnative GUI要素の表示設定も全てがうまくできません。

Unicodeに変換した時点で, 元の情報には復元できないれすよね。 1対1じゃないし。 文字の方向とか lang属性とかは DOMでアレしてるので, そっちは大丈夫。
問題になるのは 「ソースをファイルに保存」みたいなこと。
もちいど, サーバーから取得するか, あるいは, Unicodeとは別にソースを保持するか。 ・・・ Mozillaがどのよーになってるのかは知らないけど。

んで ・・・
<kbd>Firefox -chat</kbd> がキーをタイプしたことを表すよーに, <em lang="ja">彼は言った <q lang="en">hey</q> と。</em> … その部分が何語で表されているか, どこの方言か? てことを表すのだと思うです。セマンティック, みたいな。

<span lang="ja">「文書」は 中国語(簡体字)だと <span lang="cn">文档</span>, 中国語(繁体字)だと <span lang="zh">文件</span> らしい。</span>
Unicode 漢字統合問題 を扱ってるページにはこんなトコがあるです → http://www.debian.or.jp/~kubota/unicode-symbols-unihan.html http://www.ritsumei.ac.jp/kic/~tyv07679/chuden/teach/code/main8.htm http://euc.jp/i18n/ucsnote.ja.html
見栄えが変わるとすれば, それは言語に合ったレンダリングを行うってこと。 たとえば「海」とか「直」って体字は, それぞれ微妙に異なったりするです。 そんなときに, lang属性でフォントを選択できたりする, と。

lang属性が仮にないとしても, Unicodeなんだから, それらしいグリフで描画されるのがホントで, lang属性は文字コード(=character encoding) には関係がないはずれす。

♥ が "?" になったり, ×がカタカナに見えたり, ソレは大きな問題に思うです。
jjsuwa
投稿日時: 04/07/09 07:57
Home away from home
登録日: 03/01/26
居住地: Kami-Youga, Setagaya Ward, Tokyo, Japan, Earth, Sol, MilkyWay
投稿: 197
Re: langを変更
| lang属性が仮にないとしても, Unicodeなんだから, それらしいグリフで描画されるのがホントで, lang属性は文字コード(=character encoding) には関係がないはずれす。

Unicode-nativeなOSならそうでしょうが残念ながらOS/2は違います。
orca
投稿日時: 04/07/09 13:05
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Re: langを変更

jjsuwaさんは書きました:
| lang属性が仮にないとしても, Unicodeなんだから, それらしいグリフで描画されるのがホントで, lang属性は文字コード(=character encoding) には関係がないはずれす。

Unicode-nativeなOSならそうでしょうが残念ながらOS/2は違います。

たとえば, U+3040 〜 U+309F の'Hiragana' のトコに U+3042 「あ」があります。 最終的にグリフを得るため, 途中で内部コードに変換する必要があるかも知れない。 でもソレは lang属性には関係ないものれす。
lang属性が何であろーと, 「あ」は「あ」です。
Javaのツールに native2ascii.exe てゆーのがあって, コレを動かすのにも lang属性に相当するものは必要ないれす。

先の「海」とゆー文字を表示するとき, 言語によっては縦棒ではなく点々です。 コレを切り換えるために lang属性は必要カモです (有効かどーかは知らないけど)。このとき現在はフォントファイルが切り替わるかもだけど, 将来においては, (もっとましな?) 異体字を指定する他の方法がアレするかも。

http://www.asahi-net.or.jp/~hc3j-tkg/unicode/ より
CJKV を含む M17N のための code set としては Unicode-1.1 は単独では使えない。 M17N に使おうと思ったら Unicode の文字列に何らかの形で言語情報等を付加する必要がある。
Unicode-3.0(?) には言語タグ、異字体タグが入るそうで、そうなると CJKV を含む M17N にも使えるようになるのかな?


単独で使うばーい 異字体を区別する方法がない (でもとりあえず普通に表示はできるはず), だから lang属性が必要になるだろうって話ですよね。

orca
投稿日時: 04/07/17 00:54
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Re: langを変更
グリフを得る手順をもいちど考えてみると ・・・
"±" (U+00b1) を例にとると, 次の方法が考えられるです。
o DBCS (Shift_JISで) 0x81 0x7D の内部コードを得て, ソレを元にグリフを得る
o SBCS 0xb1 の内部コードを得て, ソレを元にグリフを得る

# 現在は後者で, しかも日本語のコードページのソレを得ようとして化けてる, と。

で, 全角の範囲に含まれないものもあって, &isin; だと "∈" があるけど, &notin; だと, たぶん存在しないはず。
ほかにも例えばこんなのが含まれてないよーに思うです。 → &hearts; &clubs; &diams; &spades;

こんな場合, 後者の手順でグリフを得るしかないはずで, western だと なぜかうまい具合に成功してるです。
んで, その理由が「western だから」じゃ, 納得できないカモ。
Average
投稿日時: 04/07/30 11:58
Home away from home
登録日: 03/01/27
居住地: 赤羽馬鹿祭りの町赤羽
投稿: 395
Re: 「UTF-8 encoded pages without "lang=" specification fails to use proper font for that national la
CVSチェックイン調べて、挙動が変わった前後で変わったソースを差し戻す、という事をやるというのはどうか!
・・・・誰がやるのかという問題はさておき・・・
orca
投稿日時: 04/07/31 23:52
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Re: 「UTF-8 encoded pages without "lang=" specification fails to use proper font for that national la
ある文字コードに対して, 本来のグリフじゃなく半角カタカナが現れてるトコだったら, それで回避できるかも。

でも, トランプマークも含め いくつかのマークが, その当時も表示できなかった気がするです。
てっきり, その動きで合ってると思ってたけど, ホントは違うのでは? もしかして他のプラットフォームでは, &copy; と &reg; の区別がちゃんとできてたのカモ, とか思うです。 (OS/2だとどちらも"□"だったはずだけど)

「元に戻して」と発言するにしても, ここに手を加えた人は納得できないと思うです。 何らかの意図があって変更したはずだし。
どのような手順にすれば正しく表示されるかを, 開発者?に伝えることが必要かも。
てことで, 以前のロジックを参考に正しい手順を導き出す目的なら, 昔のソースを持ち出すのもよいのかも。とか思うです。
Average
投稿日時: 04/09/01 14:43
Home away from home
登録日: 03/01/27
居住地: 赤羽馬鹿祭りの町赤羽
投稿: 395
Re: 「UTF-8 encoded pages without "lang=" specification fails to use proper font for that national la
絵文字フォントのmozillaの挙動を見るとほぼ同種な挙動のような気がしてきました。
orca
投稿日時: 04/09/03 00:13
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Re: 「UTF-8 encoded pages without "lang=" specification fails to use proper font for that national la
こんばんは。

Averageさんは書きました:
絵文字フォントのmozillaの挙動を見るとほぼ同種な挙動のような気がしてきました。

その可能性もなきにしもあらずって感じだけど, でも少し前のバージョンの Mozillaではそれなりに表示されてて, だから違う気もするです。

もうひとつは, Unicode → Shift_JIS(内部コード) → グリフをゲット ・・・ の手順で,
その内部コードが 0x0080〜0x00FFの範囲の "Latin-1 Supplement" のとき, 次に現われる内部コードとのダブル・バイト文字だ, みたいな誤った動作をしてしまうこと。 (ホントは単にグリフを得るだけなのに)

つか, この部分こそが そーゆー問題なのカモですね。
achain
投稿日時: 04/12/02 01:46
Webmaster
登録日: 03/01/26
居住地: とーきょー じゃぺーん
投稿: 2597
Re: 「UTF-8 encoded pages without "lang=" specification fails to use proper font for that national la
bugzilla-jpにorcaさんが書いておりますが,最新のMozilla trunk nightlyで一気に文字化け問題が解消した模様です♪当方もFTLib抜きで
◎変な日本語の文字化け
◎Preferences-Fontsでの日本語フォントファイル名化け
共にバッチリ直っていることを確認しました.いやぁ,非公式ビルドを提供してくれるだけでも有り難いのにbugまで修正してくれて…Peterさんスバラシすぎます.明日にでも彼にビールを贈らせて頂こうかと♪

ところでFirefoxはいまMozilla trunkと同期が取れていないらしいので,本件の完治は再度同期が取られるというFirefox 1.1(2005年春予定)まで待たないといけないかもしれません.
achain
投稿日時: 04/12/02 23:34
Webmaster
登録日: 03/01/26
居住地: とーきょー じゃぺーん
投稿: 2597
Re: 「UTF-8 encoded pages without "lang=" specification fails to use proper font for that national la
>最新のMozilla trunk nightlyで一気に文字化け問題が解消した模様

よくよく見てみたら,1.8a5でも直ってたです(汗)

# Internal Server Errorでビール贈れず.を当たろう…
orca
投稿日時: 04/12/03 07:19
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Re: 「UTF-8 encoded pages without "lang=" specification fails to use proper font for that national la
Mozillaは動かしていないので直ってたの知らなかったれす。
んで, コレって直ったとゆーより, 化けだす前の状態に戻ったって気がするです。 他の文字(例えば トランプマークとか)も表示できるよーになったらよいんだけど ・・・

Unicodeで保持しているドキュメントを実際に表示するとき, OS/2は Unicode(の機能?)を一部しかサポートしていないので, いったん Shift_JISに変換(して出力)する訳だけど, そのとき, (たぶん)Shift_JISにないコードだからダメなのかなー, なんて。
orca
投稿日時: 05/03/05 23:28
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Unicode Function
現在は, そこそこまともに横線とかも出るけど, あいかわらずトランプマーク他, 記号っぽいのがダメれす。
そんな訳で少し調べてみたです。

http://lxr.mozilla.org/mozilla/search?string=UniUconvFromUcs
使われている場所がここだけなので, たぶんここなのでしょー。
こんな感じのプログラムを (emxで)作ってみると, トランプマークは変換できない文字として扱われてしまうです。
本来どーあるべきかとゆーと, ・・・ わかりません。(T-T)

んで, 途中は抜きにして, その後は, 例えばハートマークだとしたら (SBCSのコードページでの)0x03 に変換し(され), Averageさんの投稿での話のよーに, 絵文字を持つフォントファイルからソレのグリフが取り出され, 描画されるはず。です。

てことで, 動かしてみたプログラム↓
/* Unicode Functions *//*
*/

#define INCL_DOS
#include <os2.h>
#include <uconv.h>

static UconvObject UnicodeConverter = NULL;

void
UnicodeToNative(void)
{
    if (!UnicodeConverter)
      NS_StartupNativeCharsetUtils();

size_t       out_bytes_left;
size_t       uni_chars_left;
size_t       num_subs;
size_t       char_buf_size = 50;
char         char_buffer[50];
char         *pout_char_str;
UniChar      *pin_uni_str;
UniChar      uni_data[] = L"\xff83\xff8d\x2665\x2014\x6f22\x5b57";   // ← 変換したい文字列

        pout_char_str = char_buffer;
        pin_uni_str = uni_data;
        uni_chars_left = UniStrlen(pin_uni_str)+1;
        out_bytes_left = char_buf_size;

    int unirc = UniUconvFromUcs(UnicodeConverter,
                            &pin_uni_str, &uni_chars_left,
                            (void **)&pout_char_str, &out_bytes_left,
                            &num_subs);

    if (unirc != ULS_SUCCESS) return;
    printf("%s\n", char_buffer);
}

void
NS_StartupNativeCharsetUtils()
{
    ULONG ulLength;
    ULONG ulCodePage;
    DosQueryCp(sizeof(ULONG), &ulCodePage, &ulLength);

    UniChar codepage[20];
    int unirc = UniMapCpToUcsCp(ulCodePage, codepage, 20);
    if (unirc == ULS_SUCCESS) {
        unirc = UniCreateUconvObject(codepage, &UnicodeConverter);
        if (unirc == ULS_SUCCESS) {
            uconv_attribute_t attr;
            UniQueryUconvObject(UnicodeConverter, &attr, sizeof(uconv_attribute_t),
                                  NULL, NULL, NULL);
            attr.options = UCONV_OPTION_SUBSTITUTE_BOTH;
            attr.subchar_len=2;
            attr.subchar[0]= attr.subchar[1] = '_';
            attr.displaymask = DSPMASK_DISPLAY;
            attr.converttype |= CVTTYPE_CDRA;
            UniSetUconvObject(UnicodeConverter, &attr);
        }
    }
}

void
NS_ShutdownNativeCharsetUtils()
{
    UniFreeUconvObject(UnicodeConverter);
}

void
main(int argc, char *argv[], char *envp[])
{
     UnicodeToNative();   // NS_StartupNativeCharsetUtils();
     NS_ShutdownNativeCharsetUtils();
}


# ちなみにコードページを変更してると 0x03に変換されるけど漢字はダメになってしまう
orca
投稿日時: 05/03/11 00:28
Home away from home
登録日: 03/01/28
居住地:
投稿: 269
Re: Unicode Function
Unicodeから OS/2内部コードへの変換って, OS/2のAPI使ってると思ってたけど, もしかしたらコレかも http://lxr.mozilla.org/mozilla/source/intl/uconv/ucvja/
コレをどーやって検証したらよいのか分からないけど。
« 1 (2)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Powered by IBM OS/2 Warp, Apache, PHP, MySQL and XOOPS Cube