ডাব্লুপিএফ অস্পষ্ট ফন্ট ইস্যু সমাধান -


153

সমস্যাটি বর্ণিত হয়েছে এবং নিম্নলিখিত লিঙ্কগুলিতে প্রদর্শিত হয়েছে:

ব্যাখ্যা: ডাব্লুপিএফ-তে পাঠ্য স্পষ্টতা । এই লিঙ্কটিতে ফন্টের তুলনা রয়েছে।

আমি এই সমস্যার জন্য সমস্ত সম্ভাব্য সমাধান সংগ্রহ করতে চাই। মাইক্রোসফ্ট এক্সপ্রেশন মিশ্রণ ডাব্লুপিএফ ব্যবহার করে তবে ফন্টগুলি পঠনযোগ্য মনে হয়।

  • মাইক্রোসফ্ট এক্সপ্রেশন মিশ্রণের মতো অন্ধকার পটভূমি
  • ফন্টের আকার বাড়ানো এবং হরফ (ক্যালিব্রি ...) পরিবর্তন করা [লিঙ্ক]
  • এম্বেড উইন্ডোজ ফর্মগুলি [লিঙ্ক]
  • বিটম্যাপে পাঠ্য রেন্ডার করতে জিডিআই + এবং / অথবা উইন্ডোজ ফর্ম টেক্সটরেন্ডার ক্লাস ব্যবহার করুন এবং তারপরে সেই বিটম্যাপটিকে ডাব্লুপিএফ নিয়ন্ত্রণ হিসাবে রেন্ডার করুন। [লিংক]

এরপরে কি আর কোন সমাধান আছে?

এটি ভিএস2010 (এবং ডাব্লুপিএফ 4) বিটা 2 এ স্থির হতে চলেছে

এটি দেখতে চূড়ান্তভাবে শেষ হয়েছে!

স্কট হ্যানসেলম্যানের কম্পিউটার জেন.কম: ডাব্লুপিএফ এবং পাঠ্য অস্পষ্টতা এখন সম্পূর্ণ স্পষ্টতার সাথে


VS2010RC আমার জন্য সম্পূর্ণ ব্যবহারযোগ্য নয় mpdreamz.nl/vs2010RC-blur.png
মার্টিজন লারম্যান

আমার মেশিনে থাকা ভিএস2010আরসি আপনার চিত্রের চেয়ে আরও ভাল দেখায়, আসলে সাদা ব্যাকগ্রাউন্ড সহ খুব ভাল তবে তবুও অন্ধকার পটভূমির সাথে স্তন্যপান হয়।
রবার্ট ভুকোভিć

আপনি কি এই সমস্যার জন্য কোনও সমাধান খুঁজে পেয়েছেন, আসলে আমার অ্যাপ্লিকেশনটিতে আমার এখানে একই সমস্যা রয়েছে এবং আমি VS2010 দিয়ে ডাব্লুপিএফ 3.5 ব্যবহার করছি
শার্পউরব্রেন

শেষ 3 টি লিঙ্ক মারা গেছে।
শীট জায়েগুক

উত্তর:


107

প্রযুক্তিগত পটভূমি

উইন্ডোজক্লিয়েন্ট.নেট-এর ডাব্লুপিএফ পাঠ্য প্রোগ্রাম ম্যানেজারগুলির মধ্যে একটি থেকে ডাব্লুপিএফ পাঠ্য রেন্ডারিং সম্পর্কে একটি গভীর নিবন্ধ রয়েছে: ডাব্লুপিএফ-এ পাঠ্য স্পষ্টতা

সমস্যাটি ডাব্লুপিএফ-তে নেমে আসে মসৃণ অ্যানিমেশনের জন্য রৈখিক স্কেলিং ফন্ট-রেন্ডারারের প্রয়োজন। অন্যদিকে খাঁটি ক্লিয়ারটাইপ হ'ল ফন্টের সাথে পরবর্তী পিক্সেলের উল্লম্ব কান্ডগুলিকে ঠেলাতে ফন্টের সাথে বেশ খানিকটা স্বাধীনতা নেয়।

পার্থক্যটি সুস্পষ্ট হয় যদি কেউ ক্লাসিক "ক্যাসকেড" প্যাটার্নটির তুলনা করে। নীচের বাম দিকে উইনফোর্ডস, উপরের ডানদিকে ডাব্লুপিএফ:

যদিও আমি ডাব্লুপিএফ-এর ফন্টের আইডিসিএনক্র্যাসিগুলির কোনও ভক্ত নই, আমি উইনফর্মের ক্যাসকেডের মতো অ্যানিমেশনগুলি লাফিয়ে উঠতে পারলে আমি কল্পনার কল্পনা করতে পারি।

রেজিস্ট্রি নিয়ে খেলছি

আমার বিশেষ আগ্রহের বিষয় ছিল এমএসডিএন নিবন্ধ " ক্লিয়ারটাইপ রেজিস্ট্রি সেটিংস " এর লিঙ্ক, যা রেজিস্ট্রিটিতে ব্যবহারকারীদের পক্ষে সম্ভাব্য সামঞ্জস্যগুলি ব্যাখ্যা করে:

  • ক্লিয়ারটাইপ স্তর: সাবপিক্সেল ইঙ্গিতের পরিমাণ
  • গামা স্তর
  • পিক্সেল কাঠামো: ডিসপ্লে-পিক্সেলের রঙের স্ট্রাইপগুলি কীভাবে সাজানো হয়
  • পাঠ্য বিপরীতে স্তর: ফন্টকে আরও ভারী করতে গ্লাইফ স্টেমগুলির প্রস্থ সামঞ্জস্য করে

এই সেটিংসটি নিয়ে ঘুরে বেড়ানো আসলে অন্তর্নিহিত সমস্যার উন্নতি করতে পারে নি, তবে সংবেদনশীল ব্যবহারকারীদের জন্য রঙিন রক্তক্ষরণ প্রভাব হ্রাস করে সহায়তা করতে পারে।

অন্য পদ্ধতির

পাঠ্য স্পষ্টতা নিবন্ধটি যে সর্বোত্তম পরামর্শ দিয়েছে তা হ'ল ফন্টের আকার বাড়ানো এবং ফন্ট পরিবর্তন করা। ক্যালিব্রি আমার জন্য স্ট্যান্ডার্ড সেগোয়ে ইউআইয়ের চেয়ে ভাল কাজ করে। ওয়েব ফন্ট হিসাবে জনপ্রিয়তার কারণে, আমি ভার্দনাকেও চেষ্টা করেছি, তবে এটিতে 14pt এবং 15pt এর মধ্যে ওজনের একটি বাজে ঝাঁপ রয়েছে যা ফন্টের আকারটি অ্যানিমেট করার সময় খুব দৃশ্যমান।

WPF 4.0

ডাব্লুপিএফ 4 ফন্টের রেন্ডারিংকে প্রভাবিত করার জন্য উন্নত সমর্থন করবে। ডাব্লুপিএফ পাঠ্য ব্লগে পরিবর্তনগুলির ব্যাখ্যা দেওয়ার জন্য একটি নিবন্ধ রয়েছে । সর্বাধিক সুস্পষ্টভাবে, এখন (কমপক্ষে) তিনটি বিভিন্ন ধরণের পাঠ্য রেন্ডারিং রয়েছে:

পাঠ্য রেন্ডারিং তুলনা

<গ্রাম্বল> এটি প্রতিটি ডিজাইনারের পক্ষে পর্যাপ্ত দড়ি হওয়া উচিত </ </ গ্রাম্বল>


11
দুর্দান্ত ব্যাখ্যা, +1। সম্ভবত ব্যাখ্যা করে কেন ফ্ল্যাশটিতেও এরকম হররড ফন্টের রেন্ডারিং রয়েছে।
জেফ আতউড

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

এটি "স্কেলেবল" বৈকল্পিকের মতো হরটিংয়ের ফন্ট ব্যবহার করে না, ক্লিয়ারটাইপের মতো ডাব্লুপিএফ পিক্সেল গ্রিডটি হিট করার জন্য অনুকূলিত করে না। তাত্ক্ষণিকভাবে স্ন্যাপটো ডিভাইসপিক্সেলগুলি পাঠ্যের জন্য কাজ করা উচিত তবে এটি সর্বদা উত্তরাধিকার সূত্রে প্রাপ্ত হতে হবে কারণ কোনও নিয়ন্ত্রণ এটি স্ন্যাপ করতে পারে কি না তা জানতে পারে না।
ডেভিড স্মিট

2
বিশেষ করে প্রাসঙ্গিক TextOptions.TextFormattingMode সংযুক্ত সম্পত্তি ( msdn.microsoft.com/en-us/library/ee169597.aspx )। WPF4 এবং Silverlight এছাড়াও UseLayoutRounding (আছে msdn.microsoft.com/en-us/library/dd783605.aspx ) এবং SnapsToDevicePixels ( msdn.microsoft.com/en-us/library/... ) বৈশিষ্ট্য।
প্যাট

@ সমস্ত: আমি ডাব্লুপিএফ 3.5 এ পাঠ্যের অ্যান্টি-এলিয়জিং অক্ষম করার কোনও উপায় খুঁজে পাচ্ছি না এবং ফলস্বরূপ লেবেল বা বোতামের পাঠ্যটি দেখতে খুব খারাপ দেখাচ্ছে। আদর্শভাবে আমি ফন্টগুলির জন্য বিশ্বব্যাপী অ্যান্টি অ্যালিয়াসিং অক্ষম করতে চাই। আমি কীভাবে এটি সম্পাদন করতে পারি?
শার্পউরব্রাইন

128

.NET 4 অবশেষে ডাব্লুপিএফ এর দুর্বল পাঠ্য রেন্ডারিং মানের জন্য একটি সমাধান রয়েছে, তবে এটি খুব গোপন। প্রতিটি উইন্ডোর জন্য নিম্নলিখিত সেট করুন:

TextOptions.TextFormattingMode="Display"

ডিফল্ট মান হল "আদর্শ" যা নামটি বোঝায় তা মোটেও নয়।

টেক্সটঅপশনগুলিতে টেক্সটহিন্টিংমোড এবং টেক্সটরেন্ডারিংমোডে অন্য দুটি বিকল্প রয়েছে তবে তাদের উভয়ের বুদ্ধিমান ডিফল্ট রয়েছে।


সব। ধন্যবাদ। এটি আমাকে সমস্যার সমাধান করতে সহায়তা করে, তবে আপনাকে কেবল এটি একবার সংজ্ঞায়িত করতে হবে <গ্রিড>
পিটার ডু

হ্যাঁ, এবং আপনি যদি এটি একটি উইন্ডোতে সেট করেন তবে এটি সেই উইন্ডোর মধ্যে থাকা সমস্ত কিছুর জন্য বৈধ।
হেলজে ক্লিন

ভিএস 2010 আরটিএম /। নেট 4-এ টেক্সট ফর্ম্যাট করা কতটা ভাল তা এবং এটির জন্য অনেকগুলি সাইট এবং ব্লগগুলিতে এটি সন্ধান করার জন্য অনেক সময় ব্যয় করেছেন I তবে এর মধ্যে কারওই উল্লেখ করার দরকার নেই যে আপনি এটি দিয়ে কীভাবে ডাব্লুপিএফ-অ্যাপ্লিকেশন তৈরি করতে পারেন, এটিও দুর্দান্ত দেখায়। কেন সেই সম্পত্তি এত গোপন? আপনাকে অনেক ধন্যবাদ.
এম-পেরোর

5
আমি শুধু এটাই চাই! ডাব্লুপিএফ রেন্ডারিংটি কত পরিশীলিত তা আমি সত্যিই চিন্তা করি না, ফন্টগুলি কারও কাছেই কেবল অগ্রহণযোগ্য।
জেরি লিয়াং

1
"প্রদর্শন" আমার পরিবর্তে "প্রদর্শন" এর পরিবর্তে কাজ করে। প্রকল্পটি নেট 4.6.2 এ চলছে। তারা বিভ্রান্ত নামটি স্থির করে থাকতে পারে।
জো

40

অন্য দিন আমি একটি সমস্যার মুখোমুখি হয়েছি যখন আমি একটি সীমানা ব্যবহার করেছি যা একটি ড্রপশ্যাডোএফেক্ট প্রয়োগ করেছিল। ফলস্বরূপ যে সীমানার ভিতরে সমস্ত পাঠ্য অত্যন্ত ঝাপসা ছিল। পাঠ্যটি অন্য প্যানেলের অভ্যন্তরে বা সরাসরি সীমানার নীচে ছিল কিনা তা বিবেচ্য নয় - প্রভাব প্রয়োগ করা আছে এমন কোনও পাঠ্য ব্লক যা পিতামাতার সন্তান is

এই বিশেষ কেসটির সমাধানটি ছিল সীমান্তের ভিতরে প্রভাব রয়েছে এমন স্টাফগুলি না instead ভিজ্যুয়াল ট্রিতে ভাইবোন হিসাবে) এবং এতে প্রভাব ফেলুন।

তাই ভালো:

<!-- don't do this --->
<Border>
     <Border.Effect>
          <DropShadowEffect BlurRadius="25" ShadowDepth="0" Opacity="1"/>
     </Border.Effect>
     <TextBlock Text="This Text Will Be Blurry" />
</Border>

<!-- Do this instead -->
<Grid>
  <Rectangle>
     <Rectangle.Effect>
          <DropShadowEffect BlurRadius="25" ShadowDepth="0" Opacity="1"/>
     </Rectangle.Effect>
  </Rectangle>
  <TextBlock Text="This Text Will Be Crisp and Clear" />
</Grid>

এই কৌশলটি সুন্দরভাবে সম্পন্ন করেছে। একটি হ্যাক বিট, তবে সেটিংস ইত্যাদির সাথে গোলমাল করার চেয়ে ভাল N ধন্যবাদ। আমার একটি জিনিস অবশ্য করতে হয়েছিল, এটি কোনও কিছুতে আয়তক্ষেত্রের ফিল সেট করা ছিল। যদিও এটি কেবল আমার সেটআপ ছিল।
এইডেস

হ্যাঁ আপনি ঠিক বলেছেন .. আয়তক্ষেত্রটি পূর্বনির্ধারিত স্বচ্ছ যা ড্রপ ছায়াকে অদ্ভুত দেখায়।
ইসাক সাভো

এটি আমার নমুনা অ্যাপ্লিকেশনটিতে ঘটছে না, আমি WPF 3.5 ব্যবহার করছি
শার্পউরব্রেন

@ শার্পউরব্রেন: কি হচ্ছে না? এটি আমার দ্বিতীয় উদাহরণটি ব্যবহার করার পরেও কি অস্পষ্ট?
ইসাক সাভো

হ্যাঁ, আপনার দ্বিতীয় উদাহরণটি ব্যবহার করার পরেও এটি ঝাপসা হয়ে আছে
শার্পউরব্রেন


6

স্ন্যাপটো ডিভাইসপিক্সেলগুলি কেবলমাত্র ডাব্লুপিএফ আকারগুলিতে (লাইন ইত্যাদিতে) প্রযোজ্য, পাঠ্য রেন্ডারারের ক্ষেত্রে নয়।

এই ইস্যুটির জন্য কোনও পরিচিত কাজ নেই। মাইক্রোসফ্টের মতে, আচরণটি "ডিজাইনের মাধ্যমে"।

সমস্যাগুলি নিয়ে আলোচনা করা মাইক্রোসফ্ট ফোরামগুলিতে এই থ্রেডটি দেখুন - এটি এমএস লোকদের কাছ থেকে কয়েকটি উত্তর পেয়েছে যা ইস্যুতে তাদের অবস্থান পরিষ্কার করে।


WPF 4 ফিক্সড TextOptions.TextFormattingMode সংযুক্ত সম্পত্তি (ব্যবহার msdn.microsoft.com/en-us/library/ee169597.aspx )।
প্যাট

1
সম্পত্তিটির নাম "স্ন্যাপসটোডোভাইসপিক্সেলস" এবং "স্ন্যাপটোডোভাইসপিক্সেলস" লিখিত হিসাবে নয়।
নীর কর্নফিল্ড

6

কোনও বিকাশকারীর বক্তব্য থেকে, আজ অবধি কেবলমাত্র "ওয়ার্কআরাউন্ড" হ'ল জিডিআই + এবং / অথবা উইন্ডোজ ফর্ম টেক্সটরেন্ডার ক্লাসটি বিটম্যাপে পাঠ্য রেন্ডার করতে এবং তারপরে সেই বিটম্যাপটিকে ডাব্লুপিএফ নিয়ন্ত্রণ হিসাবে রেন্ডার করে। সুস্পষ্ট কর্মক্ষমতা প্রভাব ছাড়াও, এটি বিদ্যমান অ্যাপ্লিকেশনগুলির জন্য সমস্যাটি কমায় না।

আমি এখন এই ইস্যুটির জন্য একটি মাইক্রোসফ্ট সংযোগের টিকিট তৈরি করেছি (আমার অবাক হওয়ার বিষয়, সমস্ত নেতিবাচকতা সত্ত্বেও, মনোনীত ট্র্যাকারে কোনও সত্যিকারের বাগ রিপোর্ট ছিল না)।

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


6

আমি এটিকে ত্রুটি হিসাবে দেখছি না, তবে ডিফল্ট কনফিগারেশনটি অবশ্যই খুব বিরক্তিকর। এখানে সমস্ত সংমিশ্রণের তুলনা করা হল

TextOptions.TextRenderingMode
TextOptions.TextFormattingMode
RenderOptions.ClearTypeHint

SnapToDevicePixels পাঠ্য রেন্ডারিংয়ে কোনও পার্থক্য তৈরি করে না।

http://i.stack.imgur.com/cS3S2.png

আমি পছন্দ করি:

TextOptions.TextRenderingMode="Auto"
TextOptions.TextFormattingMode="Ideal"
RenderOptions.ClearTypeHint="Auto"

যেখানে উল্লম্ব রেখা কখনই অস্পষ্ট হয় না।

ব্যবহৃত ফন্টটি হ'ল ওপেন সানস লাইট, এটি সর্বদা সুন্দরভাবে ব্যবহার করা যেতে পারে যদি সর্বশেষ টিমভিউয়ারের মতো।

যারা মহাপ্পস.মেট্রো ব্যবহার করেন তাদের ক্ষেত্রে সমস্যাটি হ'ল TransitioningContentControl https://github.com/Mahapps/Mahapps.Metro/issues/889


4

VS2010 বিটা সবেমাত্র চেষ্টা করে দেখেছেন, যা সবগুলি ডব্লিউপিএফ-এ সম্পন্ন হয়েছে এবং এটি অস্পষ্ট-ফন্ট ইস্যুতে খুব খারাপভাবে ভুগছে। বিশেষত টুলটিপ্সে।

এটি কিছু প্রমাণ দেয় যা WPF4 আসলে সমস্যার সমাধান করবে না (যদি কিছু খারাপ লাগে তবে)


3
আমি ইউআইতে প্রতিটি জায়গার জন্য ভিএস2010 বি 1 এর বিরুদ্ধে বাগ ফাইল করছি পাঠ্যটি অস্পষ্ট। টুলটিপগুলি প্রায় কমমেজিকভাবে খারাপ, আমি সম্মত। এটি ডাব্লুপিএফ 4 এ স্থির করার কথাটি কীভাবে স্পষ্টভাবে বলা হয়েছে, এটি দেওয়া মাত্র, আমি কেবল আশা করতে পারি যে এটি কেবল এই বিটার জন্য কাটেনি।
ডিন হবে

4

বাহ, আমি বিশ্বাস করতে পারি না অবশেষে আমি আমার ডাব্লুপিএফ ফন্টগুলি পঠনযোগ্য। এবং আমিও বিশ্বাস করতে পারি না যে এই পরিবর্তনগুলি সহজ করার জন্য কোনও বিকল্প ডায়লগ নেই যখন আমার প্রদর্শনটিতে ডিফল্ট মানগুলি ভয়াবহ থাকে।

এই রেজিস্ট্রি সেটিংস (দশমিকভাবে) আমার জন্য কাজ করেছিল এবং আমার নিয়মিত ক্লিয়ারটাইপ ফন্টের সবচেয়ে কাছাকাছি আসে:

  • ক্লিয়ারটাইপলিভেল: 10 (বেশিরভাগই গ্রেস্কেল আলিয়াজিং)
  • গ্যামাভেলভেল: ১৩০০ (উচ্চতর গামা ফন্টটি খুব পাতলা করে দিয়েছে এবং আমি আলিয়াসে রঙগুলি দেখছিলাম)

3

তারা বলে যে "স্ন্যাপটোডোভাইসপিক্সেলস = সত্য" কাজ করে তবে আমি কখনও ভাল ফলাফল দেখিনি।

আমি একটি অন্য ফন্টে স্যুইচ করে অস্পষ্ট পাঠ্যকে লড়াই করি।

স্পষ্টতই এটি সমস্যার সমাধান নয়, তবে আমি এটির চারপাশে কাজ করেছি।


আমি স্ন্যাপটো ডিভাইসপিক্সেল = "সত্য" এর সাথে একটি টেক্সটব্লকের সাথে তুলনা করেছি এবং 12 ডিগ্রীতে সেগোআইআই ফন্টের সাথে কোনও পার্থক্য নেই । আমি জিজ্ঞাসা করতে পারি আপনি কোন ফন্ট ব্যবহার করেন?
ডেভিড স্মিট

আমরা আমাদের ফন্টটি স্যুইচ করে পরিস্থিতি আরও উন্নত করেছিলাম। আমরা যে ফন্টটি বেছে নিয়েছি তা হ'ল আভেনির (আমি মনে করি এটি ডিফল্টরূপে ইনস্টল করা আছে, কমপক্ষে উইন্ডোজ এক্সপিতে নয়)।
cplotts

0

আপনি যদি নিজের অ্যাপের জন্য উইন্ডোজ কাস্টমাইজ করার জন্য সি # বেস ক্লাস ব্যবহার করতে পছন্দ করেন (বা এখন এর কারণ আছে) তবে আপনি এখানে কীভাবে সেট করে সেট আপেল ডিসপ্লে মোড ব্যবহার করতে পাঠ্য বিন্যাসটি সেট করতে পারেন:

public class SnappyWindow : Window
{
    public SnappyWindow()
    {
        SetValue(TextOptions.TextFormattingModeProperty, TextFormattingMode.Display);
    }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.