Google Chrome มี "การทำให้แบบอักษรเรียบ" หรือไม่


141

ฉันใช้ google webfonts และพวกเขาก็ปรับขนาดตัวอักษรให้ใหญ่สุด แต่ที่ 18px พวกมันดูแย่มาก ฉันได้อ่านที่นี่และมีคำตอบสำหรับการทำให้แบบอักษรเรียบ แต่ฉันไม่พบสิ่งที่อธิบายอย่างชัดเจนและตัวอย่างบางส่วนที่ฉันพบไม่ทำงานเลย

h4หน้าตาของฉันแย่มากในทุกเบราว์เซอร์ แต่ Chrome นั้นแย่ที่สุด ใน Chrome แบบอักษรทั้งหมดของฉันดูแย่มาก

ใครช่วยชี้ฉันในทิศทางที่ถูกต้องได้ไหม บางทีคุณอาจรู้จักทรัพยากรที่อธิบายสิ่งนี้อย่างชัดเจน? ขอบคุณ!

หน้าจอตัวอย่าง # 1

ภาพหน้าจอนี้แสดงหน้าแรกของhttps://www.dartlang.org/ภาษาการเขียนโปรแกรมที่ทำโดย Google (เพื่อให้เราสามารถบอกได้ว่าเว็บไซต์นี้สร้างโดย Google) และใช้ Google Webfonts

สกรีนช็อตแสดง Google Chrome ทางซ้าย Firefox / Internet Explorer ทางขวา:

google chrome ทางซ้าย Firefox / internet explorer ทางขวา

หน้าจอตัวอย่าง # 2

ภาพหน้าจอนี้แสดงหน้าข้อมูลผลิตภัณฑ์ใน Adobe.com โดยใช้ webfonts ที่จัดทำโดย Typekit Adobe & Typekit เป็นมืออาชีพเมื่อพูดถึงแบบอักษร

ภาพหน้าจอแสดง Google Chrome ทางด้านขวา Firefox / Internet Explorer ทางด้านซ้าย:

google chrome ทางซ้าย Firefox / internet explorer ทางขวา


พวกเขาดูดีกับฉันในโครเมี่ยมและ Firefox ... คุณสามารถเพิ่มหน้าจอการพิมพ์ได้หรือไม่?
JFK

นอกจากนี้บน iPhone / iOS พวกเขาดูดีมาก
insertusernamehere

คุณใช้ Windows หรือเปล่า ถ้าเป็นเช่นนั้นเครื่องยนต์ ClearType ที่ปรับให้เรียบของระบบปฏิบัติการอาจเป็นสาเหตุ ฉันได้ลองใช้หน้านั้นใน Mac OS, Ubuntu, Fedora และ Chrome OS นอกเหนือจาก Windows แล้ว อันหลังเป็นสิ่งเดียวที่ไม่สามารถแสดงได้อย่างถูกต้องเพราะสิ่งที่ฉันสงสัยว่าเป็นเอ็นจิ้น ClearType
จูลส์

ใช่มันเป็นหน้าต่าง คุณรู้หรือไม่ว่าฉันสามารถทำอะไรได้บ้าง?
imakeitpretty

เพิ่งค้นพบคุณสมบัติที่มีประโยชน์นี้: chrome: // flags / # lcd-text-aa - เปิดใช้งานและทำให้ข้อความเรียบเนียนสำหรับคุณ
cinek

คำตอบ:


162

สถานะของปัญหามิถุนายน 2014: แก้ไขด้วย Chrome 37

สุดท้ายทีม Chrome จะปล่อยการแก้ไขสำหรับปัญหานี้ด้วย Chrome 37 ซึ่งจะเผยแพร่สู่สาธารณะในเดือนกรกฎาคม 2014 ดูตัวอย่างการเปรียบเทียบ Chrome 35 ที่เสถียรในปัจจุบันและ Chrome 37 ล่าสุด (ตัวอย่างก่อนการพัฒนาเร็ว) ที่นี่:

ป้อนคำอธิบายรูปภาพที่นี่

สถานะของปัญหาธันวาคม 2013

1. ) มีไม่มีทางออกที่เหมาะสมเมื่อโหลดแบบอักษรผ่านทาง@import, หรือของ Google<link href= webfont.jsปัญหาคือ Chrome เพียงแค่ขอไฟล์. woffจาก API ของ Google ซึ่งแสดงผลได้อย่างน่ากลัว น่าแปลกใจที่ไฟล์ฟอนต์ประเภทอื่น ๆ มีความสวยงาม อย่างไรก็ตามมีเทคนิค CSS บางอย่างที่จะ "ทำให้" แบบอักษรที่เรนเดอร์เรียบขึ้นเล็กน้อยคุณจะพบวิธีแก้ปัญหาที่ลึกกว่าในคำตอบนี้

2. ) มีวิธีแก้ปัญหาที่แท้จริงสำหรับเรื่องนี้เมื่อทำการโฮสต์ฟอนต์ด้วยตนเองซึ่งโพสต์ครั้งแรกโดยJaime Fernandezในคำตอบอื่นในหน้า Stackoverflow นี้ซึ่งแก้ไขปัญหานี้ได้โดยการโหลดแบบอักษรบนเว็บในลำดับพิเศษ ฉันรู้สึกไม่ดีที่จะคัดลอกคำตอบที่ยอดเยี่ยมของเขาดังนั้นโปรดดูที่นั่น นอกจากนี้ยังมีโซลูชัน (ไม่ได้รับการพิสูจน์) ที่แนะนำให้ใช้แบบอักษร TTF / OTF เท่านั้นเนื่องจากเบราว์เซอร์เกือบทุกตัวรองรับแล้ว

3. ) ทีมนักพัฒนาซอฟต์แวร์ Google Chrome ทำงานเกี่ยวกับปัญหานั้น เนื่องจากมีการเปลี่ยนแปลงครั้งใหญ่หลายครั้งในเอ็นจิ้นการเรนเดอร์

ฉันได้เขียนโพสต์บล็อกขนาดใหญ่เกี่ยวกับปัญหานั้นอย่าลังเลที่จะดู: วิธีการแก้ไขการแสดงผลแบบอักษรน่าเกลียดใน Google Chrome

ตัวอย่างที่ทำซ้ำได้

ดูตัวอย่างจากคำถามเริ่มต้นในวันนี้ได้อย่างไรใน Chrome 29:

ตัวอย่างเชิงบวก:

ซ้าย: Firefox 23 ขวา: Chrome 29

ป้อนคำอธิบายรูปภาพที่นี่

ตัวอย่างเชิงบวก:

ด้านบน: Firefox 23 ด้านล่าง: Chrome 29

ป้อนคำอธิบายรูปภาพที่นี่

ตัวอย่างเป็นลบ: Chrome 30

ป้อนคำอธิบายรูปภาพที่นี่

ตัวอย่างเป็นลบ: Chrome 29

ป้อนคำอธิบายรูปภาพที่นี่

สารละลาย

แก้ไขภาพหน้าจอด้านบนด้วย -webkit-text-stroke:

ป้อนคำอธิบายรูปภาพที่นี่

แถวแรกเป็นค่าเริ่มต้นแถวที่สองมี:

-webkit-text-stroke: 0.3px;

แถวที่สามมี:

-webkit-text-stroke: 0.6px;

ดังนั้นวิธีการแก้ไขแบบอักษรเหล่านั้นก็คือให้พวกเขา

-webkit-text-stroke: 0.Xpx;

หรือไวยากรณ์ RGBa (โดย nezroy พบได้ในความคิดเห็น! ขอบคุณ!)

-webkit-text-stroke: 1px rgba(0,0,0,0.1)

นอกจากนี้ยังมีความเป็นไปได้ที่ล้าสมัย : ให้เงาที่เรียบง่าย (ปลอม):

text-shadow: #fff 0px 1px 1px;

โซลูชัน RGBa (พบในบล็อกของ Jasper Espejo):

text-shadow: 0 0 1px rgba(51,51,51,0.2);

ฉันโพสต์บล็อกในเรื่องนี้:

หากคุณต้องการที่จะได้รับการปรับปรุงในเรื่องนี้ได้ดูในโพสต์บล็อกตาม A: วิธีการแก้ไขการแสดงผลตัวอักษรที่น่าเกลียดใน Google Chrome ฉันจะโพสต์ข่าวหากมีข่าวเกี่ยวกับเรื่องนี้

คำตอบเดิมของฉัน:

ปัญหานี้เป็นปัญหาใหญ่ใน Google Chrome และทีมงาน Google Chrome ไม่ทราบเกี่ยวกับเรื่องนี้ดูรายงานข้อผิดพลาดอย่างเป็นทางการที่นี่ ปัจจุบันในเดือนพฤษภาคม 2556 แม้กระทั่ง 11 เดือนหลังจากรายงานข้อผิดพลาดก็ยังไม่ได้รับการแก้ไข เป็นเรื่องแปลกที่เบราว์เซอร์เดียวที่ทำให้ Google Webfonts เป็นเบราว์เซอร์ของ Google Chrome (!) แต่มีวิธีแก้ไขง่ายๆที่จะแก้ไขปัญหาโปรดดูวิธีการแก้ปัญหาด้านล่าง

งบจากทีมพัฒนาของ Google Chrome, พฤษภาคม 2013

แถลงการณ์อย่างเป็นทางการในความคิดเห็นรายงานข้อผิดพลาด:

การแสดงแบบอักษร Windows ของเรากำลังดำเนินการอยู่ ... เราหวังว่าจะมีบางอย่างภายในไม่กี่ก้าวที่นักพัฒนาซอฟต์แวร์สามารถเริ่มเล่นได้ ความเสถียรของมันจะเร็วแค่ไหนเช่นเคยเกี่ยวกับความรวดเร็วที่เราสามารถหยั่งรากและเผาผลาญความถดถอย


1
ปัญหาไม่ได้อยู่ในเบราว์เซอร์ทั้งหมดที่ทำงานบน Windows เป็นเพียงในกรณีของ Chrome Firefox, Opera และ IE มีการลดรอยหยักแบบอักษรที่เหมาะสม แม้ว่ามันสามารถแก้ไขได้ในโครเมี่ยมโดยใช้-webkit-font-smoothingคุณสมบัติ ดูคำตอบของฉันด้านล่าง
Kushagra

1
text-shadow: #333 0px 0px 1px;สำหรับข้อความสีดำผมใช้ ขอบคุณมากสำหรับคำแนะนำ
Yoone

6
บางทีมันอาจจะหายไปในการแปล แต่ -webkit-text-stroke ทำงานเฉพาะเมื่อคุณใช้อัลฟาของสีของตัวอักษร ดังนั้นสำหรับตัวอักษรสีดำฉันใช้บางอย่างเช่น "-webkit-text-stroke: 1px rgba (0,0,0,0.1)"
nezroy

ฉันสังเกตเห็นว่า Chrome 30 บน Mac กำลังแสดงการลดรอยหยักในลักษณะเดียวกัน
jwadsack

1
ในตั๋วอย่างเป็นทางการบนบอร์ดโครเมี่ยมสำหรับปัญหานี้code.google.com/p/chromium/issues/detail?id=137692ดูเหมือนว่าจะมีจุดมุ่งหมายเพื่อแก้ไขสำหรับ v37 หากฉันยกเลิกการปิดกั้นและโพสต์ล่าสุดในเธรดอย่างถูกต้อง .
Gruber

46

ฉันมีปัญหาเดียวกันและฉันพบวิธีแก้ปัญหาในโพสต์ของ Sam Goddardนี้

วิธีการแก้ปัญหาถ้าจะกำหนดเรียกร้องให้ตัวอักษรสองครั้ง ก่อนอื่นขอแนะนำให้ใช้สำหรับเบราว์เซอร์ทั้งหมดและหลังจากการโทรเฉพาะสำหรับ Chrome ที่มีการสืบค้นสื่อพิเศษ:

@font-face {
  font-family: 'chunk-webfont';
  src: url('../../includes/fonts/chunk-webfont.eot');
  src: url('../../includes/fonts/chunk-webfont.eot?#iefix') format('eot'),
  url('../../includes/fonts/chunk-webfont.woff') format('woff'),
  url('../../includes/fonts/chunk-webfont.ttf') format('truetype'),
  url('../../includes/fonts/chunk-webfont.svg') format('svg');
  font-weight: normal;
  font-style: normal;
}

@media screen and (-webkit-min-device-pixel-ratio:0) {
  @font-face {
    font-family: 'chunk-webfont';
    src: url('../../includes/fonts/chunk-webfont.svg') format('svg');
  }
}

ป้อนคำอธิบายรูปภาพที่นี่

ด้วยวิธีนี้แบบอักษรจะแสดงผลได้ดีในทุกเบราว์เซอร์ จุดลบเดียวที่ฉันพบคือไฟล์ฟอนต์นั้นถูกดาวน์โหลดสองครั้งด้วย

คุณสามารถค้นหาบทความเวอร์ชั่นภาษาสเปนได้ในหน้าของฉัน


6
นี่เป็นคำตอบที่ถูกต้อง แต่ก็สามารถทำให้ง่ายขึ้น เพียงแค่แสดงรายการ SVG เวอร์ชัน FIRST ในรายการฟอนต์เพื่อแก้ไขปัญหาเช่นกัน!
jduncanator

2
คำตอบนี้ให้ผลลัพธ์ที่ดีที่สุด แบบอักษร SVG ดูดีกว่า x100 -webkit-text-stroke hack ข้อเสียหลักคือขนาดตัวอักษรของรุ่น SVG ปกติแล้วมันจะใหญ่กว่ามาก :-( Google จำเป็นต้องได้รับการเรียงลำดับโดยเร็วที่สุด
Timidfriendly

ฉันเห็นด้วยอย่างยิ่ง! ฉันจะเชื่อมโยงคำตอบนี้จากคำตอบของฉัน
Sliq

@jduncanator การแสดงรายการ SVG ก่อนไม่แนะนำให้ทำ - หมายความว่าฟอนต์ SVG จะถูกโหลดโดยทุกเบราว์เซอร์ที่รองรับในขณะที่คุณต้องการ Chrome สำหรับ Windows
RoelN

@jduncanator สองผู้ร้ายหลักไม่สนับสนุนคำใบ้และขนาดไฟล์ใหญ่ (การบีบอัด gzip สำหรับฟอนต์ไม่ได้เปิดใช้งานโดยค่าเริ่มต้นบนเซิร์ฟเวอร์จำนวนมาก)
RoelN

22

Chrome ไม่แสดงแบบอักษรเช่น Firefox หรือเบราว์เซอร์อื่นใด โดยทั่วไปนี่เป็นปัญหาใน Chrome ที่ทำงานบน Windows เท่านั้น ถ้าคุณต้องการทำให้แบบอักษรราบรื่นให้ใช้-webkit-font-smoothingคุณสมบัติบนh4แท็กyer เช่นนี้

h4 {
    -webkit-font-smoothing: antialiased;
}

นอกจากนี้คุณยังสามารถใช้subpixel-antialiasedสิ่งนี้จะทำให้คุณปรับให้เรียบในแบบที่แตกต่างกัน อย่างไรก็ตามคุณจะต้องมีเวอร์ชันทุกคืนเพื่อดูผลกระทบ คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับตัวอักษรที่ราบเรียบที่นี่


11
ฉันมี Chrome รุ่นล่าสุดวันนี้ 8-feb-2013 และหน้านี้ที่นี่ไม่แสดงความแตกต่างระหว่างพวกเขาmaxvoltar.com/sandbox/fontsmoothing
thednp

4
สิ่งนี้ไม่ทำงาน (ทดสอบบน windows) ในฐานะที่เป็นของแม็คทำเช่นนี้ฉันลงทำเครื่องหมายเพื่อห้ามไม่ให้คนใช้
KryptoniteDove

4
สิ่งนี้ใช้ไม่ได้ ฉันลองใช้กับ Windows 8 ด้วย Chrome เวอร์ชันล่าสุด (จนถึงวันที่ 10/8/2013)
jay_t55

3
สำหรับ Mac Chrome และ Safari เครื่องมือนี้ใช้งานได้ดีดังนั้นจึงคุ้มค่าที่จะเพิ่ม Apple.com ใช้มันในสไตล์ชีต base.css ของพวกเขา:body { font: 12px/18px "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif; -webkit-font-smoothing: antialiased; }
จัสติน

1
firefox ที่เทียบเท่าได้คือ -moz-osx-font-smoothing: grayscale;
Jeff Walters

14

ตกลงคุณสามารถใช้สิ่งนี้ได้ง่ายๆ

-webkit-text-stroke-width: .7px;
-webkit-text-stroke-color: #34343b;
-webkit-font-smoothing:antialiased;

ตรวจสอบให้แน่ใจว่าสีข้อความและความกว้างของข้อความบนของคุณต้องให้ฉันเหมือนกันทุกประการ


การปรับแบบอักษรให้เรียบไม่ทำงานอีกต่อไป แต่การลากเส้นข้อความใช้งานได้และสามารถช่วยเหลือแบบอักษรบางแบบได้ ฉันดูเหมือนจะได้รับผลลัพธ์ที่ดีที่สุดด้วยโรคหลอดเลือดสมอง 0.5px และ rgba (0,0,0,0.5)
มอส

firefox ที่เทียบเท่าได้คือ -moz-osx-font-smoothing: grayscale;
Jeff Walters

นี่เป็นสิ่งที่ดี ... เพียงแค่แทนที่ # 34343b ด้วย inherit .. ;)
Sagive SEO

9

ฉันจะบอกก่อนว่าสิ่งนี้จะไม่ได้ผลเสมอฉันได้ทดสอบสิ่งนี้ด้วยsans-serifแบบอักษรและแบบอักษรภายนอกเช่นopen sans

บางครั้งเมื่อคุณใช้แบบอักษรขนาดใหญ่ให้ลองประมาณfont-size:49pxและขึ้นไปข้างบน

font-size: 48px

นี่คือข้อความส่วนหัวที่มีขนาด 48px ( font-size:48px;ในองค์ประกอบที่มีข้อความ)

แต่ถ้าคุณเพิ่ม 48px เป็นfont-size:49px;(และ 50px, 60px, 80px, ฯลฯ ... ) สิ่งที่น่าสนใจก็เกิดขึ้น

font-size: 49px

ข้อความจะเรียบโดยอัตโนมัติและดูเหมือนดีจริงๆ

อีกด้านหนึ่ง ...

หากคุณกำลังมองหาแบบอักษรเล็ก ๆ คุณสามารถลองสิ่งนี้ แต่ไม่มีประสิทธิภาพมากนัก

กับพาเรนต์ของข้อความเพียงใช้คุณสมบัติ css ถัดไป: -webkit-backface-visibility: hidden;

คุณสามารถแปลงบางสิ่งเช่นนี้:

-webkit-backface-visible: มองเห็นได้;

สำหรับสิ่งนี้:

-webkit-backface-ทัศนวิสัย: ซ่อนอยู่

(ตัวอักษรเป็นKreon)

พิจารณาว่าเมื่อคุณไม่ได้วางทรัพย์สินนั้น-webkit-backface-visibility: visible;จะได้รับมรดก

แต่ระวังว่าการฝึกฝนนั้นจะไม่ให้ผลลัพธ์ที่ดีเสมอไปหากคุณเห็นอย่างถี่ถ้วน Chrome จะทำให้ข้อความดูเบลอเล็กน้อย

อีกข้อเท็จจริงที่น่าสนใจ:

-webkit-backface-visibility: hidden;จะทำงานได้เช่นกันเมื่อคุณแปลงข้อความใน Chrome (ด้วย-webkit-transformคุณสมบัติซึ่งรวมถึงการหมุน, การเอียงและอื่น ๆ )

ไม่มี

ไม่มี -webkit-backface-visibility: hidden;

กับ

กับ -webkit-backface-visibility: hidden;

ฉันไม่รู้ว่าทำไมการฝึกซ้อมแบบนี้ถึงได้ผล ขออภัยภาษาอังกฤษของฉันแปลก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.