در واقع این اتفاق که گفتید نتیجه طبیعیه الگوریتم دوجهتی استاندارد است. و اون کاراکترها که گفتید اکثرا جزء کاراکترهای ضعیف به حساب میآیند.
خیلی ممنون. اتفاقا این سوال را هم داشتم که آیا شما همان الگوریتم استاندارد دوجهته را پیادهسازی کردهاید، که جوابش را گرفتم! اما یک سوال دیگر این که چرا این اتفاق مثلا در Word یا Firefox (در ویرایشگر متن Gmail وقتی راست به چپ فعال باشد مثلا) نمیافتد؟ آیا آنها الگوریتم استاندراد را پیادهسازی نکردهاند؟
مقصود شما استفاده از Delete است؟
چون کد مربوط به Backspace را مدتهاست به اینصورت درآوردهام که کاراکترهای کنترلی را درنظر بگیرد! (بجز حالت Ctrl+.)
و اگر مقصود Backspace است یک حالت ایجاد باگ را شرح دهید.
نه منظورم همان Backspace هست. اما دوباره که امتحان کردم دیدم حق باشماست. در واقع اتفاقی که میفتاد ناشی از همان مشکل تبدیل حروف متن فارسی به انگلیسی بود و مشکل جدیدی نیست. به این صورت اتفاق میافتد که اگر بعد از تایپ حروف فارسی یک فاصله بزنید و بعد \ یا $ را بزنید فاصله به سمت چپ میرود و $ یا \ به متن فارسی قبلی میچسبد. وقتی که با Backspace پاک میکنید آن فاصله هم باید پاک شود اما چون مکان نما سمت راست آن قرار گرفته (چون جزء حروف چپ به راست محسوب شده) این تصور را ایجاد میکند که داریم یک کاراکتر کنترلی مخفی را پاک میکنیم. در حالی که در واقع همان space را داریم پاک میکنیم.
ولی یک اتفاق دیگر هم میفتد که البته مستقل از بحث قبلی است: اگر بلافاصله پس از تایپ حروف فارسی یک حرف انگلیسی بزنید و بعد بلافاصله آن را پاک کنید و زبان را دوباره فارسی کنید و شروع به تایپ کنید، حروف جدید به حروف قبلی نمیچسبند و مثل حالتی میشوند که بینشان نیمفاصله خورده باشد. البته در خروجی درست است.
راستی ببخشیدها! قصد من ایراد گرفتن نیست به هیچ وجه. بلکه چون خودم کاربر تکمیکر دو جهتهی شما (البته نسخه Pi Day که به نظرم بهتر است!) هستم، دوست دارم در بهبود آن کمک کنم. و الا میدانم که پیادهسازی الگوریتم دو جهته به اندازه کافی سخت هست و وقت شما محدود. چه برسد به این که باید حالات خاص و پیچیدگیهای لاتک را هم در نظر گرفت.
باز هم ممنون.