Xterm.js: مشكلة مع الرموز التعبيرية / يونيكود (من المفترض أن يكون العرض مزدوجًا؟)

تم إنشاؤها على ١٢ أكتوبر ٢٠١٧  ·  24تعليقات  ·  مصدر: xtermjs/xterm.js

في الإصدار 3 الحالي ، يبدو أن Emojis يشغل خليتين. باستخدام مفاتيح الأسهم ، يتم القفز على خليتين بدلاً من خلية واحدة. يؤدي الحذف أيضًا إلى مسح خليتين.

kapture 2017-10-12 at 18 34 05

arerenderer duplicate typbug

التعليق الأكثر فائدة

يواجه VSCode 1.31.1 على Ubuntu 18.04 هذه المشكلة.

عندما تقوم بالتمرير لأعلى أو لأسفل في سجل الأوامر الخاص بك باستخدام مفاتيح الأسهم ، يتم التقاط العناصر الأثرية بحيث عندما تصل إلى أمر تريد تشغيله ، فمن المحتمل أن تكون غير مقروءة.

أيضًا ، بعد التقاط قطعة أثرية ، يعد تحرير الأمر عربات التي تجرها الدواب ، نظرًا لأن ما يتم عرضه يختلف عما هو موجود في الذاكرة في xterm.

خطوات:

تمت إضافة رمز تعبيري إلى موجه الأوامر الخاص بي:
screenshot from 2019-02-21 11-10-15
ضرب السهم لأعلى مرة واحدة للحصول على الأمر npm i
screenshot from 2019-02-21 11-10-55

لاحظ المارقة n التي تمت إضافتها إلى الموجه.

أزل الرموز التعبيرية من المطالبة في .bashrc وأعد تحميل المصطلح وسيختفي الخطأ.

ال 24 كومينتر

لا يمكنني إعادة إنتاج هذا على macOS / bash. لا أتوقع حدوث ذلك ما لم نحاول تعديل عرض الرموز التعبيرية (اجعله غير 1). أي مزيد من التفاصيل حول خطوات repro ستكون مفيدة.

إعادة إنتاج (OSX ، MacOS High Sierra)

  • بدء الإصدار 3 التجريبي
  • لصق 😀 عدة مرات
  • اضغط على مفتاح السهم الأيسر عدة مرات ، وانظر كيف يقفز خليتين في كل مرة ويمتد إلى حدود الخلية.

هل أنت بالفعل على MacOS High Sierra ، لأنني كذلك؟ ربما يكون مرتبطًا أيضًا بـ node-pty - أستطيع أن أرى أنه عند إدراج رمز تعبيري في Terminal.app فإنه يضيف تلقائيًا مسافة بعد الرمز التعبيري ، وحتى أكثر من ذلك ، لا يمكنني تحديد هذه المساحة ، يبدو الأمر كما لو أن High Sierra قد يهدد إنها كحرف مزدوج العرض ...

Terminal.app على MacOS High Sierra
kapture 2017-10-13 at 22 55 32

قد يكون هذا شيئًا مرتفعًا في سييرا حيث حاولوا جعل Emojis أفضل في المحطة؟ لا يمكنني التحديث حاليًا لأنه يفسد العرض في تطبيقات Electron.

أكره أن أقول إنني قمت بالترقية وأنا الآن عالق مع الكثير من مواطن الخلل في العرض في كل تلك التطبيقات القائمة على الكروم 😤

نعم كنت حريصًا على تتبع التعليقات قبل التحديث حيث حدثت أشياء مماثلة مع Sierra على ما أعتقد.

لاحظت أن تطبيق Terminal.app يتمتع بتجربة إيموجي لطيفة حيث يتم التعامل معهم على أنهم شخصيات عريضة مناسبة ، وربما يمكننا فعل ذلك إذا كان بإمكانهم ذلك 😄

عرض UAX # 11 شرق آسيا ، والمراجعة wcswidth في wchar.h ترجع عرض السلاسل. أعتقد أن macOS High Sierra كان سيدعم التحديث.
xterm.js's wcwidth in src/CharWidth.ts لم يدعمه حتى الآن.

@ mandel59 شكرا على المعلومات!

@ mandel59 أعتقد أن هذه المشكلة خاصة

المرجع: https://github.com/gnachman/iTerm2/blob/master/sources/NSCharacterSet+iTerm.m لديه بعض حلول الخرائط أيضًا.

مشكلة رمز VS: https://github.com/Microsoft/vscode/issues/59145

يبدو أن الركض الرفرفة يدل على هذا السلوك

في ما يلي نموذج Dart صغير لما نراه لا يتطلب Flutter (لا يتطلب Dart على الرغم من ذلك):

import 'dart:async';

import 'dart:io';

// Windows console font has a limited set of Unicode characters.
final _animation = Platform.isWindows
    ? <String>[r'-', r'\', r'|', r'/']
    : <String>['🌕', '🌖', '🌗', '🌘', '🌑', '🌒', '🌓', '🌔'];
final _backspace = '\b' * _animation[0].length;

main() {
  int ticks = 0;
  void update(Timer timer) {
    if (ticks % 50 == 0) {
      stdout.write('\nDoing thing... ');
    }
    stdout.write('$_backspace${_animation[ticks++ % _animation.length]}');
  }

  new Timer.periodic(const Duration(milliseconds: 100), update);
}

احفظ كملف .dart ثم قم بتشغيله باستخدام dart xxx.dart . يصدر هذا الرمز هنا مسافتين للخلف لهذا الحرف ، والذي في محطة macOS القياسية يزيل الحرف بشكل صحيح. ومع ذلك ، في محطة VS Code ، ستعمل على الضغط للخلف على الرموز التعبيرية ثم حرف آخر. إذا كان الرمز التعبيري في بداية السطر ، فلن يفعل ذلك شيئًا ، ولكن إذا لم يكن كذلك ، فإن العرض يزحف ببطء إلى اليسار بواسطة حرف (ويترك النصف الأيمن من الرمز بعده).

إذا قمت بإزالة * _animation[0].length من مسافة للخلف بحيث تقوم دائمًا بعمل مسافة للخلف واحدة ، فإنها تعمل بشكل جيد في محطة VS Code ، ولكن لم تعد مسافات للخلف كافية في macOS Terminal (لذلك تزحف الأقمار إلى اليمين !).

ينطبق أيضًا على العبرية / العربية كما هو مذكور في https://github.com/Microsoft/vscode/issues/60470

يواجه VSCode 1.31.1 على Ubuntu 18.04 هذه المشكلة.

عندما تقوم بالتمرير لأعلى أو لأسفل في سجل الأوامر الخاص بك باستخدام مفاتيح الأسهم ، يتم التقاط العناصر الأثرية بحيث عندما تصل إلى أمر تريد تشغيله ، فمن المحتمل أن تكون غير مقروءة.

أيضًا ، بعد التقاط قطعة أثرية ، يعد تحرير الأمر عربات التي تجرها الدواب ، نظرًا لأن ما يتم عرضه يختلف عما هو موجود في الذاكرة في xterm.

خطوات:

تمت إضافة رمز تعبيري إلى موجه الأوامر الخاص بي:
screenshot from 2019-02-21 11-10-15
ضرب السهم لأعلى مرة واحدة للحصول على الأمر npm i
screenshot from 2019-02-21 11-10-55

لاحظ المارقة n التي تمت إضافتها إلى الموجه.

أزل الرموز التعبيرية من المطالبة في .bashrc وأعد تحميل المصطلح وسيختفي الخطأ.

أول الأشياء أولاً ، أردت أن أشكركم يا رفاق على عملكم الرائع.

يواجه VSCode 1.31.1 على macOS Mojave 10.14.3 نفس التجربة. الشيء n الذي ذكره @ Juliusecker يحدث لي أيضًا ، تمامًا كما وصفه.

لدي نفس الخطأ كما ذكرهjuliusecker.
إصدار VSCode 1.33.1 (1.33.1) 51b0b28134d51361cf996d2f0a1c698247aea definitely 2019-04-11T08: 14: 39.158Z
إصدار النظام: macOS 10.14.4 (18E226)
zsh 5.7.1 (x86_64-apple-darwin17.7.0)

من السهل جدًا إعادة إنتاجه في VSCode و Powershell.

emojiterminaltest.ps1

"Emoji Normal"
"😊1😊2😊3😊4"
"Emoji with Padding Spaces - What it should look like"
"😊  1😊  2😊  3😊  4"

image

هل هناك أي موارد مخصصة لهذا العنصر؟ يبدو أن هناك الكثير من الانحدارات في البرامج الأخرى (Hyper ، إلخ) كما هو موضح في سلسلة المحادثات هذه.

jerch هل هذه نسخة مكررة من https://github.com/xtermjs/xterm.js/issues/1709؟

Tyriar نعم كيندا ، هذا مجرد مثال حيث من المرجح أن يواجهه ppl - Emojis: smile_cat:

أعتقد أننا سنبقيهما مفتوحين لأن هذا يصف المشكلة جيدًا وأن رقم 1709 ينظر أكثر إلى الحل ، بالإضافة إلى أن هذا واحد لديه مجموعة من الأصوات المؤيدة.

يمكن نسخه في نظام التشغيل Windows 10 ، الإصدار التالي:
image

image
ما ورد أعلاه هو ما أراه في محطة بناء كود VS ،
image
ما ورد أعلاه هو ما أراه عند فتح نفس النص في ملف نصي في رمز VS.

كانت القضية حوالي عامين ، أي تحديث؟

يريد jerch الوصول إليه قريبًا ، إلا أنه يمتلك مجموعة من أجهزة الصراف الآلي الجارية. كان أحد أكبر حاصرات هذا النظام هو النظام الإضافي الجديد الذي تم إصداره الآن.

الإغلاق لصالح https://github.com/xtermjs/xterm.js/issues/1709 لأنهما في الأساس نفس الشيء ونريد إبقاء مشكلتنا في العد التنازلي.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

johnpoth picture johnpoth  ·  3تعليقات

tandatle picture tandatle  ·  3تعليقات

zhangjie2012 picture zhangjie2012  ·  3تعليقات

Mlocik97-issues picture Mlocik97-issues  ·  3تعليقات

chris-tse picture chris-tse  ·  4تعليقات