নিরবচ্ছিন্নভাবে পাঠ্য রেন্ডারিংয়ের উপায়গুলি?


12

আমি স্পিচ সনাক্তকরণের সাথে ব্যবহারের জন্য ইমাস এক্সটেনশন লিখছি এবং আমি একটি বিশেষ বৈশিষ্ট্য সহকারে সাহায্যের সন্ধান করছি। কিছু শব্দ বক্তৃতা শনাক্তকারী (ড্রাগন) নিয়মিতভাবে দুর্বল স্বীকৃতি দেয় - আপনি এটি কতবার প্রশিক্ষণ দিচ্ছেন তা বিবেচনাধীন নয়, এটি নির্দিষ্ট কিছু শব্দ চিনতে পারে ck একই সময়ে সাধারণত আপনি যখন কোনও বিষয়ে লিখছেন বা কোডিংয়ের সময় আপনি একই শব্দটি বারবার ব্যবহার করবেন।

সুতরাং আমি একটি মোড লিখেছি যা বাফারে শব্দগুলি কীভাবে রেন্ডার হয় তা পরিবর্তন করতে ওভারলে ব্যবহার করে। এটি শব্দের মধ্যে একটি এলোমেলো অক্ষর গ্রহণ করে, এলোমেলো রঙে এটি আন্ডারলাইন করে এবং এর উপরে শীর্ষে একটি এলোমেলো ছদ্মবেশী চিহ্ন (অ্যাকসেন্ট, উমলাউট ইত্যাদি) রাখে। এখানে একটি স্ক্রিনশট রয়েছে (চিহ্নগুলি বা আন্ডারলাইনগুলি দেখতে আপনাকে সম্ভবত জুম করা দরকার):

এখানে চিত্র বর্ণনা লিখুন

তারপরে আপনি বলতে পারেন, "বেগুনি পি চুল" এবং এটি 'আ' এর নীচে একটি বেগুনি রঙের আন্ডারলাইনযুক্ত শব্দটি সন্ধান করবে যা চুলের মতো দেখায় এবং সেই শব্দটি আপনার জন্য টাইপ করে। সুতরাং উপরের স্ক্রিনশটে বলার ফলে ইমাকগুলি আপনার জন্য "regexp-quot" টাইপ করতে পারে।

ধারণাটি হ'ল এটি আপনাকে ইতিমধ্যে অনস্ক্রিনযুক্ত যে কোনও শব্দের উল্লেখ করতে দেয় যা শনাক্তকারীরা স্বীকৃতি দেওয়ার ক্ষেত্রে ধারাবাহিকভাবে ভাল শব্দগুলির একটি সীমাবদ্ধ সেট ব্যবহার করে sc

মাঝে মাঝে সংঘর্ষের ঘটনা বাদে এটি বেশ ভাল কাজ করে। এটি বানাতে যাতে আমি ধারাবাহিকভাবে একইভাবে শব্দের উল্লেখ করতে শিখতে পারি আমি শব্দের এমডি 5 হ্যাশ থেকে পরিবর্তে (random)বা অ্যালগরিদমযুক্ত বাইটগুলি ব্যবহার করে এমন পরিবর্তনগুলি নির্ধারণ করি যাতে সংঘর্ষ এড়ানো যায়। আমি কেবল 6 সহজেই পৃথকযোগ্য রঙ খুঁজে পেয়েছি (যখন আন্ডারলাইনটি কেবলমাত্র একটি অক্ষর প্রশস্ত এবং একক পিক্সেল পুরু থাকে তবে এটি শক্ত) এবং 3 সহজেই পৃথকযোগ্য ডায়ায়্রিটিকাল চিহ্নগুলি (একে অপরকে পৃথক করে বলা সহজ এবং উপরোক্ত একটি রেখাচিত্রের সাথে বিভ্রান্তিকরও নয়) উপরের উত্সের শীর্ষে প্রদর্শিত লাইন বা আন্ডারলাইন দিয়ে ওভারল্যাপিং)।

সংঘর্ষের ফ্রিকোয়েন্সি হ্রাস করার জন্য আমার রেন্ডারিং পরিবর্তন করার আরও আরও উপায় প্রয়োজন। আদর্শভাবে একটি রেন্ডারিং পরিবর্তন হবে:

  • বাকী বাক্যটি থেকে ব্যঙ্গ করবেন না। এটি আমাকে বিলোপ করতে পরিচালিত করেছে উদাহরণস্বরূপ বিপরীত-ভিডিও সম্পত্তি property
  • অন্যান্য পরিবর্তনগুলির সাথে সহজেই বিভ্রান্তিকর হয়ে উঠবেন না। পূর্বের লাইনে আন্ডারলাইনগুলির জন্য ওভারলাইনগুলি সহজেই ভুল হয়ে যায়। আপনার ফন্টের আকারটি ব্যবহারিকভাবে বিশাল না হলে প্রচুর ডায়াক্রিটিকাল চিহ্নগুলি দেখতে একইরকম লাগে।
  • অন্যান্য পরিবর্তনগুলি যেখানে স্থানিকভাবে তার কাছাকাছি থাকুন। এখনই একবার আমার চোখ লক্ষ্যযুক্ত চরিত্রটি সমস্ত তথ্য, মার্কার, আন্ডারলাইন এবং চিঠিটি খুঁজে পেয়েছে।
  • একটি নির্দিষ্ট প্রস্থের ফন্টের সাথে সুন্দরভাবে কাজ করুন (কোডিংয়ের জন্য প্রয়োজনীয়) যা ডায়াক্রিটিকাল চিহ্নগুলি সঠিকভাবে সরবরাহ করে (চিহ্নগুলি সঠিকভাবে রেন্ডার করার জন্য আমাকে কনসোলাস থেকে দেজাভু সানস মনোতে স্যুইচ করতে হয়েছিল)
  • লাতিন বর্ণমালার অক্ষরে কাজ করুন। উদাহরণস্বরূপ আরবীয় সমন্বয় চিহ্ন রয়েছে তবে তারা লাতিন বর্ণমালার অক্ষরের সাথে একত্রিত হয় না।
  • অক্ষরের রঙ পরিবর্তন করবেন না, কারণ এটি ইতিমধ্যে সিনট্যাক্স হাইলাইটের জন্য ব্যবহৃত হচ্ছে।
  • বাস্তবে ইম্যাক্স লিস্প সহ ইম্যাকগুলিতে করণীয় হন;)

হতে পারে এমন বিশেষ ইউনিকোড চরিত্রগুলি রেন্ডারিং নিয়ন্ত্রণ করছে যা নতুন সম্ভাবনাগুলি খোলার জন্য অপব্যবহার করা যেতে পারে? বা আন্ডারলাইন ঘন করার কোনও উপায় যাতে আমি সহজেই আরও রঙের পার্থক্য করতে সক্ষম হতে পারি? অথবা ইউনিকোড ছাড়াও অক্ষরের শীর্ষে চিহ্নগুলি রেন্ডার করতে দেয় এমন কিছু অন্যান্য অস্পষ্ট ইম্যাকস বৈশিষ্ট্য?


আপনার প্রশ্নের সরাসরি উত্তর নয়, তবে নতুন চরিত্রের উপস্থিতি দিতে ওভারলে ব্যবহার করে সম্ভবত বেশ কয়েকটি ধারণা। একটি ধারণা কনট্যাক্ট / স্যান্ডউইচ দু'টি ওভারলে একসাথে করা - এগুলি নিয়মিত চরিত্রের মতো একই জায়গায় ফিট করতে বাধ্য করা - উদাহরণস্বরূপ, প্রথম অক্ষরটি রঙ যুক্ত যুক্ত একটি পাতলা রেখা (char-to-string ?\uFEFF)এবং অন্যটি হ'ল একটি লক্ষ্য অক্ষর আকার তাই তারা উভয় ফিট। আরেকটি ধারণা হ'ল লাইব্রেরিতে emacswiki.org/emacs/VlineMode তে ব্যবহৃত একই রকম একটি উল্লম্ব স্ট্রাইক- থ্রো ( কিছু ফন্টে উপলভ্য , তবে সমস্ত নয়) ব্যবহার করা হবেvline.el
আইনজীবি

@ লিওলিস্ট: ইউনিকোডের লাইন ধারণাটি আকর্ষণীয়, এটি আমাকে একটি 'সাইডলাইন' করতে দেয়। নীচের চরিত্রের আকারটি কীভাবে হ্রাস করবেন তা সম্পর্কে আপনার কী ধারণা আছে? আমি সম্ভবত ডিসপ্লে সম্পত্তি সহ ব্যবহারের জন্য একটি চিত্র তৈরি করতে পারতাম তবে আফ্রিকান চিত্রটিতে টেক্সট রেন্ডার করার জন্য ইমাসগুলি পাওয়ার কোনও উপায় নেই, সুতরাং আমাকে ইমেসের বাইরে চিত্রগুলি তৈরি করতে হবে।
জোসেফ গারভিন

এই মন্তব্যটি পূর্ববর্তী মন্তব্যে (যেটি আমি সরিয়েছি) সুপারিশ করে এবং নীচের লিঙ্কের কোডটিও পাশাপাশি আপডেট করা হয়েছে - এতে তিনটি উদাহরণ রয়েছে (যার মধ্যে একটি উত্তর আমি বর্তমান থ্রেডের নীচে পোস্ট করেছি যে উত্তরটির সাথে মিল রয়েছে): স্ট্যাকওভারফ্লো .কম / প্রশ্ন / 23744237 /…
আইনজীবি

উত্তর:


4

আরেকটি সম্ভাবনা হ'ল শব্দের আগে লাইন সংখ্যা প্রদর্শন করা এবং লাইন নম্বরটি বলা বা সঠিক লাইন নম্বরটি খুঁজে বের করা যেহেতু বিরক্তিকর হবে, তাই আপনি + বা - সংখ্যার 5 বা 10 লাইনের মধ্যে অ্যালগোরিদম অনুসন্ধান করতে পারেন বলুন।

অথবা সম্ভবত এমন কোনও অঞ্চল বা ফাংশন ঘোষণা করুন যেখানে আপনি কাজ করছেন এবং সমস্ত অনুসন্ধান কেবল সেখানে দেখছেন। আমি ধারণা করব যে সংঘর্ষগুলিকে সীমাবদ্ধ করবে।

আপনি কোনও বর্ণের পরে বা তার আগে আগে ইউনিকোড চিহ্নগুলি রেন্ডার করতে পারেন যাতে এগুলি দাঁড়াতে সহায়তা করে। এবং বাক্সটি বা অন্য রঙে শব্দটিকে আন্ডারলাইন করুন। এইভাবে আপনার 6 টি শব্দের রঙ * 6 টি প্রতীক রঙ * এন প্রতীক সম্ভাবনা থাকতে পারে। আপনি সম্ভবত 10 টি ভাল প্রতীক খুঁজে পেতে পারেন এবং 360 টি সমন্বয় করতে পারেন। উদাহরণস্বরূপ আপনি এখানে বিড়াল শব্দটি উল্লেখ করতে "নীল হলুদ তারা" বলতে পারেন could

এখানে চিত্র বর্ণনা লিখুন

যদি তারকাটি খুব ঝগড়াটে থাকে তবে আপনি দম্পতিটি করতে পারেন: বাক্স এবং দুটি আলাদা: আন্ডারলাইন।

সুতরাং আপনি এখানে "নীল হলুদ লাল" ব্যবহার করে গাছ শব্দটি উল্লেখ করতে পারেন যা আপনাকে 216 টি সংমিশ্রণ ব্যবহার করতে পারে।

এখানে চিত্র বর্ণনা লিখুন


1
কেউ অন্য কৌশলগুলি নিয়ে আসে কিনা তা দেখার জন্য আমি কিছুক্ষণ অপেক্ষা করেছিলাম, তবে আমি সম্ভবত ডাবল আন্ডারলাইন রঙের সাথে যাচ্ছি কারণ প্রতীকগুলি যুক্ত করে ইনডেন্টেশনটি ফেলে দিতে পারে। গ্রহণ করা হয়েছে, ধন্যবাদ।
জোসেফ গারভিন

2

আপনি কি এস-জাম্প-মোডের কথা শুনেছেন ?

এটি আপনার নির্দিষ্ট করা কোনও প্রয়োজনীয়তা পূরণ করে না, তবে দেখে মনে হচ্ছে এটি আপনি কী অর্জন করতে চাইছেন তা পুরোপুরি ফিট করে। এটি ব্যবহারকারীকে কেবল 2 বা 3 টি শব্দ দিয়ে কোনও শব্দ নির্দিষ্ট করতে দেয়।

আপনি যে অক্ষর সরবরাহ করে সেগুলির সেটটি আপনি সংজ্ঞায়িত করতে পারেন, তাই আপনি যে ব্যঞ্জনবর্ণগুলি পৃথক করা শক্ত তা এড়াতে পারবেন। তারপরে ব্যবহারটি কেবল "ফিক্স এ নাইন" বলতে পারে এবং শুরু হওয়া নবম শব্দটি সংশোধন করতে পারে a


টেলসবার্গের পোস্টে আমার মন্তব্য দেখুন কেন এস-জাম্প-মোড কার্যকর হয়নি for
জোসেফ গারভিন

1

আকর্ষণীয় প্রশ্ন। আমি বাজি ধরছি আপনি কিছু আকর্ষণীয় পরামর্শ পাবেন।

আমার কাছে ঘটে যাওয়া একটি ছোট্ট পরামর্শ হ'ল আন্ডারলাইনের জন্য বিভিন্ন রঙ এবং শৈলী ব্যবহার করা। এলিসপ ম্যানুয়াল, Face Attributesবৈশিষ্ট্য :underlineএবং এর :colorএবং :styleউপাদানগুলি সম্পর্কে নোড দেখুন ।

আপনি এর জন্য অ্যাট্রিবিউট :boxএবং বিভিন্ন লাইনের প্রস্থ এবং শৈলীগুলির সাথেও পরীক্ষা করতে পারেন , তবে এটি সম্ভবত খুব বিরক্তিকর।


1

আমি লক্ষ্য শব্দটি নির্বাচন করার বিকল্প বিকল্প প্রস্তাব করে উত্তর দেব। অর্ধেক শব্দের হাইলাইট করুন (এলোমেলোভাবে নির্বাচিত)। লক্ষ্য শব্দটি হাইলাইট করা থাকলে এবং "না" অন্যথায় অন্যথায় ব্যবহারকারী "হ্যাঁ" বলে। যদি ব্যবহারকারী "হ্যাঁ" বলেছিলেন, হাইলাইট করা সমস্ত শব্দটি নিন এবং এলোমেলোভাবে সেগুলির অর্ধেক হাইলাইট করুন। যদি ব্যবহারকারী "না" বলেছিলেন, এলোমেলোভাবে শব্দটির অর্ধেকটি হাইলাইট করা হয়নি। আবার ব্যবহারকারী নির্দেশিত শব্দটি "হ্যাঁ" বা "না" বলে হাইলাইট করা হয়েছে কিনা তা নির্দেশ করে। কেবলমাত্র লক্ষ্য শব্দটি হাইলাইট না করা পর্যন্ত পুনরাবৃত্তি করুন।

এই পদ্ধতির কিছু সুবিধা:

  • আপনার স্ক্রিনে কত শব্দ আছে তা বিবেচনা করেই এটি কাজ করে।
  • আপনার অভিনব রঙ, হরফ বা চিহ্নের প্রয়োজন নেই। একটি একরঙা প্রদর্শন যথেষ্ট।
  • খুব কম জ্ঞানীয় লোড কারণ কোনও শব্দ হাইলাইট হয়েছে কিনা তা বলা সহজ।

খসড়া: আপনাকে প্রায়শই "হ্যাঁ" এবং "না" বলতে হয়। যাইহোক, এটি ধারণার নীচের পরিবর্তনের দ্বারা স্থির করা হয়েছে: শব্দগুলি হাইলাইট করবেন না তবে তাদের জন্য রঙ ব্যবহার করুন। আপনি বলছেন যে আপনার কাছে 6 সহজেই আলাদা আলাদা রঙ রয়েছে। এর অর্থ হ'ল যদি আপনার পর্দায় 100 টি শব্দ থাকে তবে লক্ষ্য শব্দটি নির্বাচন করতে গড় 2.6 বর্ণের নামকরণ প্রয়োজন। যদি 1000 শব্দ থাকে তবে আপনার গড়ে গড়ে 3.9 টি রঙের নাম লিখতে হবে।


1
দুর্ভাগ্যক্রমে কথ্য শব্দগুলি একটি বিভ্রান্তিমূলক মেট্রিক। সমাধানের এই স্টাইলের সমস্যাটি হ'ল এটিতে উপলব্ধি / ক্রিয়া রাউন্ড ট্রিপস রয়েছে। আমাকে রঙটি দেখতে হবে, তারপরে প্রতিক্রিয়া জানাতে হবে, তারপরে দেখুন, প্রতিক্রিয়া দেখবেন, দেখুন। প্রত্যেকটির মধ্যে তাকাতে না থামিয়ে 3 টি শব্দ বলা আপনার যে কোনও সমাধানের তুলনায় অনুশীলনে দ্রুততর হওয়া উচিত, বিশেষত ড্রাগনের সাথে অল্প বিলম্ব রয়েছে। এই রাউন্ড ট্রিপগুলি যদি সমস্যা না হত তবে আমি কেবল এস-জাম্প-মোডটি ব্যবহার করতাম। ডায়াক্রিটিকাল চিহ্নগুলির সাহায্যে আমি একবার স্ক্রিনটি দেখতে পারি এবং ড্রাগনকে প্রতিটি শব্দের পরে প্রতিক্রিয়া জানানোর জন্য বিরতি না দিয়ে আমার কী বলতে হবে তার পুরো স্ট্রিংটি জানতে পারি।
জোসেফ গারভিন

1

নিম্নলিখিত গ্রাফিকাল ইমা্যাক্স সংস্করণগুলির জন্য এক্সপিএম চিত্র সহ একটি ওভারলে ব্যবহার করে একটি উদাহরণ যা এক্সপিএম চিত্র বিন্যাস সমর্থন করে। এটি 11 পিক্সেল প্রশস্ত; 20 পিক্সেল উচ্চ; এবং ব্যবহারকারীর নির্দিষ্ট 4 টি সম্ভাব্য রঙ রয়েছে। আমি স্নো লেপার্ড 10.6.8 চালাচ্ছি এমন একটি ম্যাকের সাথে রয়েছি এবং ইমাস ব্যবহার করার সময় আমি যে ফন্টটি পছন্দ করি তা হ'ল -*-Courier-normal-normal-normal-*-18-*-*-*-m-0-iso10646-1- এটি frame-char-width11 এবং frame-char-height20 টি। আমি বড় হাতের অক্ষর "এ" এর বামে একটি পাতলা উল্লম্ব হলুদ রেখা যুক্ত করেছি কীভাবে কাস্টম চিত্রগুলি আঁকতে হবে তার উদাহরণ। বিন্দুতে চরিত্রটির প্রতিস্থাপন প্রোগ্রামটিমে (char-after (point))সেই সংখ্যাটি ব্যবহার এবং গ্রহণের মাধ্যমে তৈরি করা যায় - যা এই ক্ষেত্রে মূল অক্ষর "এ" এর জন্য 65 - এবং যথাযথ ভেরিয়েবলের বিকল্প হিসাবে স্থাপন করে (cond ((eq (char-after (point)) 65) cap-ltr-a-xpm) . . .- এবং সেই ভেরিয়েবলটি ব্যবহার করে ওভারলে প্লেসমেন্ট - যেমন,(overlay-put (make-overlay (point) (1+ (point))) 'display cap-ltr-a-xpm)। এটি কাটা কাটা বাফার এবং শব্দ-মোড়ানো উভয়ের পক্ষে খুব সুন্দরভাবে কাজ displayকরে কারণ শব্দের মাঝখানে একটি অক্ষরের উপরের ওভারলে সম্পত্তি শব্দের মোড়কে ভাবতে ভাবায় না যে শব্দের প্রথম অংশটি আগের লাইনের শেষে রয়েছে think । অবশ্যই, প্রিয় xpm চিত্রগুলির একটি কাস্টম লাইব্রেরি তৈরি করতে সময় লাগবে।

ইমেজম্যাগিক একটি নির্দিষ্ট ফন্ট পরিবার এবং আকারের উপর ভিত্তি করে একটি নির্দিষ্ট চরিত্রের একটি অর্ধ-নির্ভুল এক্সপিএম উত্পাদন করতে সক্ষম, তবে এটি যেমনটি আশা করেছিলাম তেমন সুনির্দিষ্ট হয়নি - বাহ্যিক ইউটিলিটি ব্যবহারের জন্য এখানে নির্দেশাবলীর একটি লিঙ্ক এখানে দেওয়া হয়েছে: https: / /stackoverflow.com/a/14168154/2112489 সংক্ষেপে, ব্যবহারকারীর তার নিজস্ব পছন্দ অনুসারে এক্সপিএম চিত্রগুলি কাস্টমাইজ করার জন্য সময় ব্যয় করতে প্রস্তুত হওয়া উচিত।

(defun xpm-example ()
(interactive)
"Doc-string"
  (let* (
      (cap-ltr-a-xpm `(image :type xpm :mask nil :ascent center :data
        "/* XPM */
        static char * letters_xpm[] = {
        /* columns rows colors chars-per-pixel */
        /* columns = 1 pixel in width -- see also (frame-char-width) */
        /* rows = 1 pixel in height -- see also (frame-char-height) */
        \"11 20 4 1\",
        \". c #000000\",
        \"+ c #FF0000\",
        \"@ c #7F0000\",
        \"% c yellow\",
        \"%..........\",
        \"%....++....\",
        \"%....++....\",
        \"%..++..++..\",
        \"%..++..++..\",
        \"%++......++\",
        \"%++......++\",
        \"%++......++\",
        \"%++......++\",
        \"%++......++\",
        \"%++......++\",
        \"%++++++++++\",
        \"%++++++++++\",
        \"%++......++\",
        \"%++......++\",
        \"%++......++\",
        \"%++......++\",
        \"%++......++\",
        \"%++......++\",
        \"%..........\"};"))  )
    (overlay-put (make-overlay (point) (1+ (point))) 'display cap-ltr-a-xpm)))

@ ওসামাসা - আপনাকে ধন্যবাদ - আমি এক্সবিএম বিটম্যাপস সম্পর্কিত ভুল বিবৃতিটি সরিয়েছি।
আইনজীবি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.