問題タブ [uniscribe]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
text - カーニングをユニスクライブ
職場では、テキスト文字のカーニングをより適切にサポートするために、アプリケーションのテキスト レンダリングを改善するという任務を負っています。私たちのアプリケーションは、テレビに表示される画像を生成するため、画質が最も重要です。したがって、生成する出力の外観を少し改善するだけでも非常に役立ちます。
現在のテキスト エンジンは、理想的なソリューションと思われる Uniscribe を使用して実装されています。hereで述べたように、複雑なスクリプトを使用して、コンテキストを意識した方法で合字の置換をサポートしています。また、右から左へ記述する言語と BiDi も処理します。アラビア語/筆記体言語を完全にレンダリングできるようにする必要があるため、これはすべて重要です。
したがって、Uniscribe がグリフ カーニング情報を出力していないように見えるのはかなり奇妙に思えます。問題を示すスクリーンショットを添付しました。
代替テキスト http://www.aliparr.net/kerning.jpg
私のアプリは、すべてのグリフが「モノスペース」で表示されるという点で、メモ帳と同じように機能します。Photoshop CS2 では、「T」の上部にあるブリッジが「e」の上にうまく張り出していることに注目してください。これを再現したい。
私は Pango/Freetype などの他の API を認識していますが、Uniscribe が他のすべてに優れている場合、このタスクの最後の 1% を実行するためだけにそれらすべてを含めるのは、かなり重量級のソリューションのようです。
Uniscribe を使用する手順がありませんか? これに対する最善の解決策は何ですか?Freetype は、既存の Uniscribe ソリューションと統合できるように、軽量な方法でカーニング情報をエクスポートできますか?
注意: Windows で実行する必要があるだけです。プラットフォームの移植性は、ありがたいことに、今心配する必要がある問題ではありません。
事前に乾杯!
unicode - 複雑なスクリプトのサポートを有効にすると、具体的にどうなりますか?
地域と言語の設定で [複雑なスクリプトと右から左への言語 (タイ語を含む) のファイルをインストールする] チェックボックスをクリックすると、正確には何が起こりますか?
- レジストリ キーを変更しますか?
- いくつかの .fon ファイルとキーボード dll がインストールされることに気付きました。
Windows XP で複雑なスクリプトを読みたいだけの場合、これは完全に必要ですか? ホストOSとしてのWindows 7としてのVirtualBox内での私のテストは、複雑なスクリプトを読み取るために有効にする必要がないことを示しているようです。しかし、このテーマに関するすべての文献がそう言っているわけではありません。どうしたの?
アップデート:
コンプレックス スクリプトが有効になっていない場合、 http://hi.wikipedia.orgは読み取れないはずです。
http://hi.wikipedia.org/wiki/विकिपीडिया:Devanagari_Help
問題はそれが読めることです。
delphi - DelphiでのScriptGetPropertiesの使用
DelphiでUniscribeDll(usp10.dll)のScriptGetPropertiesAPIを使用するにはどうすればよいですか。
C ++で例を見つけましたが、Cが苦手なので、翻訳方法がわかりません。
Delphiコードは、TurboDelphi2006以降に準拠している必要があります。
windows - FONTSIGNATUREがlfCharSetを反映しないのはなぜですか?
私は次のようなWindowsフォントを列挙しています:
私のコールバック関数には次のシグネチャがあります。
TrueTypeフォントの場合、私は通常、各顔の名前を複数回取得します。たとえば、複数の呼び出しの場合、を取得pelf->elfFullName
してpelf->elfLogFont.lfFaceName
設定し"Arial"
ます。他のフィールドを詳しく見ると、各呼び出しが異なるスクリプトに対するものであることがわかります。たとえば、最初の呼び出しでpelf->elfScript
は"Western"
、とは。pelf->elfLogFont.lfCharSet
と同等の数値になりますANSI_CHARSET
。2回目の呼び出しで、とを取得"Hebrew"
しHEBREW_CHARSET
ます。3回目の呼び出し"Arabic"
とARABIC_CHARSET
。等々。ここまでは順調ですね。
ただし、Arialのすべてのバージョンのフォント署名( )フィールドは同じです。pMetrics->ntmFontSig
実際、フォント署名は、ArialのこれらのバージョンすべてがLatin-1、ヘブライ語、アラビア語などをサポートしていると主張しています。
描画しようとしている文字列の文字セットを知っているので、フォントの署名に基づいて適切なフォントをインスタンス化しようとしています。フォントの署名は常に一致するため、ヘブライ語やアラビア語のテキストを表示する場合でも、常に「西洋」フォントを選択することになります。低レベルのUniscribeAPIを使用しているため、Windowsフォントリンクのメリットは得られませんが、コードは機能しているようです。
lfCharSet
実際に何か意味がありますか、それともレガシーアーティファクトですか?それぞれの顔のすべてのスクリプトのバリエーションについて心配するのをやめるlfCharSet
べきですか?DEFAULT_CHARSET
私の目的では、TrueTypeフォントとOpenTypeフォントのみを気にします。
java - インド語スクリプトの複雑なテキスト レイアウト
テルグ語に Unicode TrueType フォントを使用しています。テルグ語に指定された範囲で一連の Unicode 文字を入力し、Java 関数を使用して対応する文字を表示したいと考えています。Java のどの部分がシーケンスをクラスタに分割して処理しますか? WindowsではUNISCRIBEがそれを行うと信じています。Javaにsivachanderに似たものがあるかどうか知りたい
です
font-size - Uniscribe API を使用してフォントの幅を調整する方法
ご容赦ください。私は Uniscribe を初めて使用するので、これがばかげた質問ではないことを願っていますが、他のどこにも解決策を見つけることができませんでした。それで、ここに行きます...
Uniscribe API を使用してフォントの幅を縮小しようとしています。つまり、特定の高さの特定のフォントが与えられた場合、各文字の幅 (および関連するすべてのスペース) をユーザー定義のパーセンテージで縮小できるようにしたいと考えています。
LOGFONT
現在のフォントの構造を取得し、lfWidth
フィールドを元の値のパーセンテージに調整することで、Uniscribe 関数を呼び出さずにこれを成功裏に達成しました。これは単なる平均的な文字幅ですが、望ましい結果が得られたようです。
ただし、Uniscribe を使用して同じことを実行しようとすると、 のlfWidth
呼び出しに続いてフィールドが 0 にリセットされることに気付きましたScriptShape()
。その結果、すべてのレンダリングされたテキストは元の幅を使用して出力されます。これがなぜなのか、またはそれを回避するために何をすべきかを説明するのに途方に暮れています。
私がやろうとしていることをすることが可能であるかどうか、誰にも分かりませんか?
windows - Unicode文字のグリフユニコード表現を取得する方法
Windowsは、uniscribeライブラリを使用して、場所に基づいてアラビア語とインディタイプの文字を置き換えます。新しいグリフには、入力された文字の元のユニコードが残っていますが、Unicodeで専用の表現があります。入力されたものではなく、実際に表示されたもののUnicodeを取得する方法。
c++ - LTRをRTLに変換しますか?
多くのUIコンポーネントと開発ツールがrtlをサポートしていないことをご存知のように、テキストを反転させると呼ぶことができます。結果は同じ例です。
LTR
RTL
とにかくこのLTRをRTLに変換する方法はありますか、私には何の考えもありませんし、言語は関係ありません
実際、私はRAD Studio Firemonkeyアプリケーションでこれを実行するためのソリューションを探しています。Firemonkeyアプリはrtlをサポートしていないため、rad studioのロードマップにはありますが、まだ実装されていません。
c++ - WindowsAPIは太字フォントを選択します
太字のフォントを選択するためのコードを記述しようとしています(実際には、クロスプラットフォームのフォントレンダラーに送信するフォントファイル名を取得したいのですが、あまり関係ありません)。CreateFont()を使用して、cWeightをFW_BOLDに設定し、pszFaceNameを「Arial」に設定します。このフォントをDCに選択し、GetTextFace()を使用して、実際に選択されたフォントを確認します。結果はArialです。フォントがArialBoldではなく、別のフォントファイルを持つ別の面であることに驚きました。Arial Boldフォントを指定する唯一の方法は、pszFaceNameを「ArialBold」に設定することでした。残念ながら、フォント名の末尾に太字を追加するだけでは、一部のフォントでのみ機能します。これは、一部のフォントには個別の太字フォントがないためです。
フォントの実際の太字バージョンが確実に返されるように太字を指定する一般的な方法はありますか?
ありがとう
フィル
truetype - Uniscribe とテキスト アウトライン
Uniscribe で ScriptShape/ScriptItemize からの出力を使用して文字コードを取得し、その文字コードを GetGlyphOutline に渡してベジエを取得できますか?
Uniscribe はアウトラインを直接取得するための呼び出しを持っていますか?