2016-04-06 9 views
5

<mark>タグを使用してテキストをインタラクティブに強調表示するアプリケーションがあります。ユーザがマウスをドラッグすると、ドキュメント内のテキストノードをラップしてアンラップして、ユーザに選択を示す。選択された範囲が単語の途中で終わると、マークはその単語の一部だけを囲みます。境界がカーニングされたペアの間にある場合、カーニングは無効になります。タグの境界でカーニングを続ける

ここ例です:最初の段落で

p { font-size: 30pt; margin: 0; line-height: 26pt; }
<p>There <mark>are 1</mark>1 entries.</p> 
 
<p>There are 11 entries.</p>

、<マーク>タグは、二つの "1" の数字の間に終了します。 2番目の段落には、同じテキストがあり、<のマークはありません。フォントサイズ、余白、および行間隔は、段落をより近づけるために調整されます。

1より前には、<のマークが付いたスペースが多くあります。これはアプリケーションでインタラクティブに発生するため、ユーザーがマウスを1秒以上ドラッグすると、次のテキストは1秒の間に右にシフトし、次の文字を通過すると戻ってきます。テキストの「ジグリング」は迷惑になる可能性があります。

にはではなく、マークタグをカーニング境界として扱うことができますか?たぶん、フォントフィーチャー設定ですか?

答えて

2

さて、あなたは完全にカーニングオフにすることができますホープ境界は常にタグ境界にあります。

p { font-size: 30pt; margin: 0; line-height: 26pt; font-kerning: none; } 
 
mark { margin: 0; font-kerning: none; }
<p>There <mark>are 1</mark>1 entries.</p> 
 
<p>There are 11 entries.</p>

+0

私はあなたがこれが私がすることができる最高になるだろうと思っています。私はカーネーションの目的のために境界を無視するようにブラウザに指示する、あまり知られていないCSSプロパティ(フォント機能の設定、bazillion少し複雑なオプションがあります)があるかもしれないことを期待していました。 ブラウザではこれが可能であることは明らかです(この例ではマークされている領域と同じ領域をマウスで選択し、カーニングに変更はありません)ので、私は手を差し伸べると考えました。 – scottb

0

私は何度も "クレンズ"修正を探し続けてきましたが、marginプロパティでは片方しか解明できませんでした。

Check this out

mark { margin: 0 -1pt; } 

が、私はそれはあなたがカーニングするので、効果を見ていないに取得するつもりだ最も近いと思う...それは

+1

これは手段をカーニングするものではありません。カーニングは特定の文字ペアに関係します。 –

+0

あなたは私に何かを学ぶ、私は 'font-kerning'プロパティを知らなかった! –

1

選択されたテキストの強調表示を制御する::selection擬似要素を使用することを検討してください。

markタグを挿入する場合は、選択プロセスの完了後に行うことができます。その時点でタグ境界でカーニングが失われますが、少なくともユーザーが選択したときにはジグルは表示されません。

::selection { 
 
    background-color: yellow; 
 
}
There are 11 entries.<br/> 
 
There are 11 entries.

+0

この場合は動作しません。選択されたテキストは(その意味で)存在しないので、:: selection擬似要素は私の場合は何も参照しません。 – scottb

+0

私は混乱しています。ユーザがマウスをドラッグすると、実際にテキストが選択され、 ':: selection'擬似要素は実際にその選択されたテキストを参照します。私が逃していることを教えてくれますか? –

+0

私はモバイル環境、特にiOSに取り組んでいます。選択はそのようには機能しません。ユーザーはタッチして保持し、結果の「ハンドル」を移動する必要があります。私はテキストを選択するためのより単純な相互作用が必要なので、私はそれを構築しています。 – scottb