Ace: カヌ゜ル䜍眮が間違っおいたす

䜜成日 2015幎06月15日  Â·  34コメント  Â·  ゜ヌス: ajaxorg/ace

jsonのフォヌマットにaceラむブラリを䜿甚したした。
等幅フォントを䜿甚する必芁があるこずはわかっおいたす。 私は「Consolas」を䜿甚しおいたすが、別のバグがありたす。cusrsorは最埌の文字から右にマヌゞンがありたす。
画面を芋る
bug

これを修正する方法を知っおいたすか

最も参考になるコメント

私は同様の問題を抱えおいたした、そしおこのcssの远加はそれを修正したした。 圹立぀かもしれたせん...

.ace_editor, .ace_editor div{
    font-family:monospace
}

理由 @nightwingが蚀ったように。このcssの远加により、モノスペヌスを䜿甚しおいるこずが保蚌されたす。

党おのコメント34件

実行しおみおください

fm = editor.renderer.$textLayer.$fontMetrics;
"xiXbm".split("").map(fm.$measureCharWidth, fm)

これが異なる数字を出力する堎合、゚ディタヌで䜿甚されるフォントはモノスペヌスではありたせん。

たた、ルヌルconsolas !importantを远加するこずは、LinuxずMacで機胜しなくなるため、お勧めできたせん。

私は同様の問題を抱えおいたした、そしおこのcssの远加はそれを修正したした。 圹立぀かもしれたせん...

.ace_editor, .ace_editor div{
    font-family:monospace
}

理由 @nightwingが蚀ったように。このcssの远加により、モノスペヌスを䜿甚しおいるこずが保蚌されたす。

Windows 10 / Chrome41.0.2272.76でこの問題が発生しおいるナヌザヌがいたす。

@nightwingそのコヌドを実行したずき、これが出力でした。

screen shot 2015-09-14 at 12 05 26 pm

これはWindowsでのみ発生するようです。 以前、文字間隔を調敎するたで、Windows 8以降ではカヌ゜ルの䜍眮が_垞に_間違っおいるこずがわかりたした https 

しかし、私のナヌザヌはただこれを時々芋おいたす。 こちらのスクリヌンショットをご芧ください
https://github.com/Crunch/Crunch-2/issues/39

Aceは、枬定時に衚瀺された行の_all_ CSSプロパティを䜿甚したすか 文字間隔、テキストシャドり、テキストレンダリング、-webkit-text-size-adjust、-webkit-font-smoothingなど。 ぀たり、衚瀺されおいる゚ディタヌに適甚される、珟圚のフォントの蚈算されたスタむルを䜿甚したすかたたは特定のフォントのみを䜿甚したすか

@ matthew-deanこのすべおのプロパティを゚ディタヌのルヌト芁玠でカスタマむズする必芁があるため、゚ヌスラむンによっお継承されるスタむルはメゞャヌdivによっおも継承されたす。
text-rending optimizeLegibilityはサポヌト

@nightwing text-rendering: optimizeLegibilityは確かに犯人かもしれたせん。 これは、モノスペヌスを異なる方法でオフセットするこずを私が考えるこずができる唯䞀のこずです。これは、特にChrome、特にWindows7以降のWindows甹Chromeで問題になっおいるようです。https  1827幎およびその他のさたざたなバグが提出されたした。

少なくずも゚ディタヌでは、その蚭定を削陀しお、倉曎されるかどうかを確認したす。 @vdzundzaこれは断続的であるため、それが

その蚭定をテキストレンダリングgeometricPrecisionに倉曎したした。これは、テキスト文字のレンダリングでさらに正確になるはずです。 ただし、Windowsでは、カヌ゜ル䜍眮が䞍正確に描画されたす。 他のスクリヌンショットを芋る@https //github.com/Crunch/Crunch-2/issues/39

この問題を再珟したデモペヌゞを教えおいただけたすか、それずもデバッグできるようにcrunch-2を教えおください。

@nightwing Crunch 2のコピヌはここで入手できたす https 

次に、Twitterで私にメッセヌゞを送信したす https 

@nightwing䜕かアむデアはありたすか Windows10ではただ問題が発生しおいたす。

これをWindows10で再珟できたせんでした。問題を瀺す画像を送っおいただけたせんか

@nightwingこのスレッドには、䜕が起こっおいるかを瀺すためにアニメヌション化されたいく぀かの画像がありたす https 

@nightwingこれはHaskligフォントhttps://github.com/i-tu/Hasklig+ Chromium 41 + text-renderingで、optimizeLegibilityたたはgeometricPrecisionのいずれかを䜿甚しおいるず思いたす。 合字を有効にする蚭定は、䞀貫性のない文字幅でレンダリングされるこずになりたす。 長いリガチャヌの行を䜿甚しお、テキストのレンダリングのオンずオフを切り替えおテストしたずころ、行の長さが倉曎されたした。 したがっお、私の堎合、Haskligは技術的にはその環境では等幅フォントではないように芋えるため、おそらくAceの問題ではありたせん。 野生のガチョりを远いかけおすみたせん。 フォントが非モノスペヌスでレンダリングされおいるこずに気づきたせんでした。

゚ラヌ...私はあたりにも早く話したかもしれたせん。 Source Code Proでもカヌ゜ル䜍眮に問題があり、 text-rendering: optimizeLegibilityがオフになっおいたす。 ただし、テキストレンダリングの蚭定/蚭定解陀はカヌ゜ル枬定を「リセット」しおいるように芋えるため、初回以降は再珟できない堎合がありたす。

わかった。 そのため、原因は正確にはわかりたせんが、修正が機胜しおいたす。 text-indent: 0.1pxを蚭定しおから、短いタむムアりト埌にtext-indent: 0.1pxを蚭定しおいたす。 これにより、次のようにレむアりト/ペむント/コンポゞットがトリガヌされたす http 

@nightwingこれに遭遇したこずがない理由の1぀は、ブラりザの「固有の」フォント蚭定のいずれかが可胜性が高いず思われるテヌマ。 Chromeのテキスト行の最初のペむントは䞍正確である可胜性がありたす。぀たり、Aceの枬定倀も䞍正確ですが、誰かが再レむアりトをトリガヌするCSSプロパティを1぀でも蚭定しおいる限り、誰も気付かないでしょう。

したがっお、再珟したい堎合は、CSSでのみ蚭定され、テヌマでは蚭定されおいないフォント蚭定でテストできたすが、バグを再珟するための魔法の組み合わせが䜕であるかはわかりたせん。 たた、Aceは、特定のCSSを䜿甚しお特定のテキスト行を枬定し、それを既知の定数結果がどうあるべきかず比范するこずでこのバグを怜出できる可胜性がありたす。䞀臎しない堎合は、再描画をトリガヌしたす。同じように。 しかしもちろん、それはそもそもバグを再珟するこずを意味したす。

もう1぀できるこずは、垞にレむアりト/再描画をトリガヌするかどうかに関係なく、Aceに垞に埌期のCSSプロパティを蚭定させるこずです。 目に芋えないものを芋぀けようずしたしたが、それが䜕であるかはわかりたせん。私が知る限り、これを䞀床実行しおも目立ったパフォヌマンスの䜎䞋はありたせん。これで十分です。 。

私は正確な問題に遭遇し、なんずかそれを修正するこずができたした私の堎合。

Aceからの出力でYAMLフロントマタヌを抜出する関数を実行しおいたした。 この関数は、AceのonChangeむベントで実行されたす。 関数が゚ラヌをスロヌするず、カヌ゜ルの同期が解陀され始めたした。 カヌ゜ルが氞久に同期しなくなる別の同様の問題ずは察照的に、これは「回埩」したす。これは、すべおを遞択しおすべおを削陀し、関数が゚ラヌをスロヌせずに曞き蟌みを開始するず、カヌ゜ルが正しく配眮されるためです。

私が十分に明確であるかどうか、たたはそれが䜕らかの圢で圹立぀かどうかはわかりたせんが、Aceを取り巻くコヌドフロヌぞの䜕らかの䞭断により、カヌ゜ル䜍眮が正しく曎新されない可胜性がありたすカヌ゜ル䜍眮が特定の埌に曎新されたす物事が実行され、それらが倱敗した堎合、カヌ゜ルの配眮は倱敗したすか

@kenlimmjがむベントリスナヌから゚ラヌをスロヌするず、他のリスナヌが呌び出されないため、゚ディタヌが砎損したす。
editor.on("input",は、あなたがしおいるこずにずっおより良いむベントかもしれたせん。

同じ問題。

スクリヌンショット
image

@ AviralGarg1993は、等幅フォントを䜿甚する必芁がありたす。

@nightwingそれはうたくいかなかったようです。

https://github.com/AviralGarg1993/codeSirens/commit/edf539da1d752e5b7404a4fd7ae129f0f74a1d35

image

この問題を抱えおいる他の人にずっお、これは圹立぀かもしれたせん

フォントサむズをremに蚭定しおいる堎合Bootstrap 4のように、カヌ゜ルが䞍安定になりたす。
フォントサむズを12pxに蚭定するず、問題が解決したした。

.ace_editor .ace_content {
  font-size: 12px !important;
}

基本的に、Aceは「モノスペヌス」フォントのみを衚瀺できたす。フォントを䜕らかの方法で倉曎するか、cssでフォント名を割り圓おた可胜性がありたす。
Firefoxで䜜業しおいる堎合は、デフォルトのフォントでモノスペヌスフォントが倉曎されたす。 だからそれを知っおおいおください。

@wislemのアドバむスは私にはうたく導いおくれたした。

これをグロヌバルスタむルシヌトで䜿甚するず、フレヌムワヌクに関係なくすべおの問題が修正されるず思いたす。 remでfont-sizeを䜿甚する基本的な問題は、同じコアの問題でした。

.ace_editor div, .ace_editor span { font-size: 12px !important; }

゚ヌス゚ディタは、モノスペヌスフォントのみで動䜜しおいるようです。 @ skbly7で述べられおいるように、゜リュヌションはfont-family:monospace適甚できたすが、 !importantを远加するず、芁玠の単語の埌に適甚される他のcssによるオヌバヌラむドが防止されたす。

.ace_editor, .ace_text-input, .ace_editor div{
    font-family : monospace !important;
}

私はAcefor Less.jsを䜿甚しお新しいサむトを構築しおいたすが、これはただ問題であり、2人の゚ディタヌを陀いおペヌゞには䜕もありたせん。 私の叀いtext-indent: 0.1pxハックを詊しおみる぀もりです。

今回は、これらが原因ずなったVueプロゞェクトのデフォルトのスタむルでした。

html {
  word-spacing: 1px;
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
  -moz-osx-font-smoothing: grayscale;
  -webkit-font-smoothing: antialiased;
}

゚ヌスのデフォルトスタむルはおそらくそれらの蚭定をリセットするはずです。

これはAce゚ディタヌの叀い問題のようです。特に、英語以倖のテキストを貌り付けるず明らかになりたす。

私の仮定は、ここのいく぀かのクレむゞヌなコヌドがそれを匕き起こしおいるずいうこずです
https://github.com/ajaxorg/ace/blob/902d1a02864479cfa7c47f46972ff53fb56924fc/lib/ace/virtual_renderer.js#L1221

で詊しおみおください
Встре́ча с ЌеЎве́ЎеЌ ЌП́жет быть П́чеМь Ппа́сМа. Ру́сскОе лю́ЎО лю́бят хПЎО́ть в лес О сПбОра́ть грОбы́ О я́гПЎы. ОМО́ Ўе́лают э́тП с ПстПрП́жМПстью, так как ЌеЎве́ЎО тП́же П́чеМь лю́бят я́гПЎы О ЌП́гут Мапа́сть Ма челПве́ка. МеЎве́Ўь ест всё: я́гПЎы, ры́бу, Ќя́сП О Ўа́же МасекП́Ќых. ОсП́беММП ПМ лю́бОт ЌёЎ.

奇劙なフォントを遞ぶ代わりに、代わりに原因を修正したくないですか これはモナコ゚ディタの問題ではありたせん

カヌ゜ルの問題はただ修正されおいたせん。 それはただそこにあり、問題はcssではないず思いたす。 それはクレむゞヌなカヌ゜ルロゞックです

https://github.com/ajaxorg/ace/blob/902d1a02864479cfa7c47f46972ff53fb56924fc/lib/ace/virtual_renderer.js#L1309

そしお特に
https://github.com/ajaxorg/ace/blob/902d1a02864479cfa7c47f46972ff53fb56924fc/lib/ace/virtual_renderer.js#L1482
https://github.com/ajaxorg/ace/blob/902d1a02864479cfa7c47f46972ff53fb56924fc/lib/ace/virtual_renderer.js#L1509
X座暙がオフです
これは偎溝にも圱響したす。 フォント幅はたったく考慮されおいたせん

たたは倚分
https://github.com/ajaxorg/ace/blob/7285dad33867771a688a96bbf2309f4e995a5b7d/lib/ace/layer/cursor.js#L174

代わりにmonacoを䜿甚するようにアプリをリファクタリングしようずしおいたすが、これを修正できるかどうかも疑問に思っおいたす。

ロシア語で等幅フォントに蚭定した堎合でも、問題はただありたす

このモノスペヌスフォント地獄の䞀時的な解決策の1぀は、ロシア語だけでなく、すべおの蚀語をカバヌするace゚ディタヌを備えたモノスペヌスフォントを含めるこずです。

フォヌマットされたテキストを゚ヌス゚ディタに貌り付けるず、カヌ゜ルの䜍眮がめちゃくちゃになるずいう別の問題があるず思いたす。 ゚ヌスはそれを消毒しおいたせん

@blurymind長いものず短いものは、カヌ゜ル䜍眮を掚定するためのアルゎリズムであり、ブラりザ゚ンゞンでフォントがどのようにレンダリングされるかに぀いおはひどく玠朎だず思いたす。 したがっお、文字が実際にどのように描画されるかを枬定するのではなく、いく぀かの基本的なCSS蚭定ず、おそらく1぀の文字のサむズに基づいお、文字が「あるべき」ものを掚定し、残りのテキストに぀いおメトリックが保持されるず想定しおいるようです。 どのような仮定がなされおいるのかはわかりたせんが、本質的に欠陥があるようです。

実際のメトリックを取埗しないず、レンダリングされたテキストブロックの終わりがどこにあるかを実際に知るこずはできたせん。 正しいアルゎリズムが䜕であるかはわかりたせんが、これは非垞に簡単に砎れるため、カヌ゜ル䜍眮ずテキスト幅に぀いお根本的に欠陥があるず考えられおいるようです。

私の堎合、「ff」たたは「fi」ず入力した埌にのみ発生したした...私にずっおは、合字をオフにするこずで機胜したした。
だから远加するだけ
.ace_editor, .ace_editor div { font-variant-ligatures: none !important; }
cssに。

それが圹に立おば幞い ;

こんにちは、
ここでは奇劙な状況ですが、フォントが単䞀の問題ではないこずを確認できたす。
私のプロゞェクトには、Ace゚ディタヌを䜿甚しおJSONを入力するコンポヌネントがありたす。 フォントは垞に「モノスペヌス」になりたす。
ずにかく、それは孀立したずきにストヌリヌブックでスムヌズに動䜜したす。
コンポヌネントがCSSから継承する堎合ストヌリヌブックではなくアプリで䜿甚する堎合、カヌ゜ルの誀動䜜ずいう同じ問題が発生したす。
継承されたスタむルはたくさんありたすが、フォントはモノスペヌスです。

@Copainbig他のcssルヌルも干枉する可胜性がありたす。たずえば、すべおのdiv芁玠のフォントサむズを蚭定したす。

mediawiki + chromeを䜿甚しおいたすが、同じ゚ラヌが発生したした。

を䜿甚しお解決された問題

.ace_editor, .ace_editor * { font-family: "Monaco", "Menlo", "Ubuntu Mono", "Droid Sans Mono", "Consolas", monospace !important; font-size: 12px !important; font-weight: 400 !important; letter-spacing: 0 !important; }

MediawikiCommon.cssで

@ skbly7私はこの問題に盎面しおいたした。以前のバヌゞョンの゚ヌス゚ディタヌのように芋えたすが、あなたの゜リュヌションは機胜したしたが、私にずっおは機胜したせんでした。

これがあなたが探しおいた解決策です、

.ace_editor * {
    font-family: monospace !important;
}

あなたが知る必芁があるすべお

したがっお、゚ヌス゚ディタを䜿甚する堎合、他のフォントを実際に䜿甚するこずはできないようです。 それはあなたのコヌド゚ディタたたはあなたがおそらく゚ヌス゚ディタを実装しようずしおいるずころにあなたが取り組んでいるかもしれないもののために倚くのUXを台無しにするでしょう。 したがっお、将来この問題に盎面した堎合は、䞊蚘のコヌドを䜿甚しお、この厄介な問題を取り陀くこずができたす。これは、解決するのが難しいためです。 そしお、それはjavascript゚ラヌではなく、単にcss゚ラヌ/バグであり、それが原因で想定どおりに機胜しおいたせんでした。

.ace_editor, .ace_editor * { font-family: "Monaco", "Menlo", "Ubuntu Mono", "Droid Sans Mono", "Consolas", monospace !important; font-size: 12px !important; font-weight: 400 !important; letter-spacing: 0 !important; }

私にずっおは、reactaceパッケヌゞを䜿甚したwindows10で問題なく動䜜したす

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡