การสนับสนุนเบราว์เซอร์และวิธีแก้ปัญหาสำหรับสัญลักษณ์ลีร่าตุรกี

ดังนั้นเมื่อเร็ว ๆ นี้ตุรกีจึงตัดสินใจสร้างสัญลักษณ์ใหม่สำหรับลีราของพวกเขา:

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

Unicode 6.2 (เผยแพร่เมื่อเดือนกันยายน 2012) ได้เพิ่มสิ่งนี้ลงใน รายการต่างๆ เป็น U+20BA ₺ TURKISH LIRA SIGN และ ฉันถูกขอให้เริ่มใช้งานในเว็บแอปที่ฉันกำลังสร้าง ปัญหาคือ ยังไม่มีใคร รองรับสิ่งนี้ (ยกเว้น Windows 8 ที่เห็นได้ชัด) และมันไม่แสดงเป็นสี่เหลี่ยมจัตุรัสปกติ เครื่องหมายคำถามหรือบล็อก o 'hex แต่เป็นของสุ่มอื่น ๆ ทุกประเภท fileformat.info ที่มักจะเชื่อถือได้คิดว่าควรจะมีลักษณะเช่นนี้ นี้:

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

...ซึ่งเป็นสิ่งที่ฉันได้รับจาก OS X Charbase เข้าใจแล้ว ผิดเหมือนกัน แต่แตกต่าง:

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

คำถามเชิงปฏิบัติ: มีวิธีแก้ไขที่สมเหตุสมผลหรือไม่ ปัญหายุ่งยากที่ใหญ่ที่สุดคืออักขระควรได้รับอนุญาตให้อยู่ในข้อความที่กำหนดเองและแก้ไขได้โดยผู้ใช้ ดังนั้นโซลูชันที่ใช้รูปภาพใดๆ จึงไม่สามารถทำได้

และคำถามทางทฤษฎี: เท่าที่ฉันเห็น U+20BA ไม่เคยมีตัวละครถูกกำหนดให้เลย แล้วสัญลักษณ์แปลกๆ เหล่านั้นคืบคลานมาจากไหน? ฉันไม่ได้รับปัญหาเดียวกันกับ U+20B9 ₹ INDIAN RUPEE SIGN ซึ่งเกือบจะใหม่และได้รับการสนับสนุนไม่ดี แต่อย่างน้อยก็ล้มเหลวอย่างสวยงามมากขึ้น


person lambshaanxy    schedule 02.01.2013    source แหล่งที่มา
comment
fileformat.info แสดงอักขระได้อย่างถูกต้องแล้ว   -  person digitalfrost    schedule 20.10.2015


คำตอบ (3)


แนวทางที่ดีที่สุดในปัจจุบันน่าจะเป็นการใช้แบบอักษรของ Google Source Sans Pro. ประกอบด้วย TURKISH LIRA อยู่ใน latin1-subset ดังนั้นคุณสามารถใช้เช่น

<link rel=stylesheet href=
"http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700,400italic,700italic&amp;subset=latin,latin-ext">
<style>
body { font-family: Source Sans Pro; }
</style>

อย่างไรก็ตาม นี่หมายความว่าคุณควรพิจารณาใช้ Source Sans Pro เป็นแบบอักษรโดยรวมของคุณ มีสองเหตุผลในเรื่องนี้ สมมติว่าคุณประกาศ font-family: Arial, Source Sans Pro เป็นต้น ประการแรก IE 9 ไม่สามารถเรนเดอร์ TURKISH LIRA ได้ (จริงๆ แล้วการใช้ฟอนต์ไม่ดีเลย) ประการที่สอง บนเบราว์เซอร์ที่ใช้แบบอักษรในทางเทคนิค OK นิพจน์เช่น "₺50" (ตัวเลขที่นำหน้าด้วย TURKISH LIRA) จะดูแปลก เนื่องจากตัวเลขจะสูงกว่าเครื่องหมายสกุลเงินมาก เหตุผลก็คือใน Source Sans Pro นั้น TURKISH LIRA ได้รับการออกแบบให้ตรงกับความสูงของตัวเลขในแบบอักษรนั้น และใน Arial ตัวเลขจะมีความสูงน้อยกว่า

อีกทางเลือกหนึ่ง คุณสามารถใช้รูปภาพ TURKISH LIRA ในขนาดที่ค่อนข้างใหญ่ และใช้องค์ประกอบ img เพื่อฝัง โดยตั้งค่าคุณสมบัติ height ในหน่วย em เพื่อให้ปรับขนาดตามขนาดตัวอักษร สาเหตุของขนาดใหญ่ก็คือรูปภาพโดยทั่วไปจะลดขนาดลงได้มากแต่ไม่ขึ้นมากขนาดนั้น ใน คำแนะนำในการใช้อักขระพิเศษใน HTML ฉันขอแนะนำให้ใช้ height: 0.8em สำหรับอักขระที่ฝังเป็นรูปภาพ แต่ขนาดที่แน่นอนนั้นขึ้นอยู่กับการออกแบบอักขระและรูปภาพ และควรเกี่ยวข้องกับอักขระในแบบอักษรอย่างไร หลักการปกติคือการทำให้อักขระสกุลเงินเช่น “$”, “£” และ “€” มีความสูงเท่ากับตัวเลข (โดยเฉพาะ “ตัวเลขซับใน” หรือ “ตัวเลขตัวพิมพ์ใหญ่” ซึ่งเป็นค่าแบบอักษรส่วนใหญ่ตามค่าเริ่มต้น Source Sans Pro มี "ตัวเลขแบบเก่า" ด้วยเช่นกัน แต่ต้องเลือกโดยใช้ CSS)

เพื่อให้เข้าใจถึงสิ่งต่างๆ TURKISH LIRA เป็นอักขระใหม่ล่าสุดใน Unicode ซึ่งเพิ่มเข้ามาเมื่อเดือนกันยายนปีที่แล้ว และโดยปกติจะใช้เวลาประมาณสิบปีหรือมากกว่านั้นในการนำอักขระไปใช้ใน Unicode จนถึงความพร้อมใช้งานทั่วไปในแบบอักษร

ป.ล. นี่เป็นปัญหาแบบอักษร ไม่ใช่ปัญหาเบราว์เซอร์ แม้ว่าเบราว์เซอร์บางตัว (IE) ยังคงมีปัญหาในการรับอักขระจากแบบอักษรที่แตกต่างกัน

person Jukka K. Korpela    schedule 02.01.2013
comment
ฟังดูดีจริงๆ แต่คุณสรุปได้อย่างไรว่า Source Sans Pro รองรับ lira ฉันได้รับ X เมื่อฉันพยายามดูสตริง U+20BA ₺ TURKISH LIRA SIGN ในตัวอย่างเว็บฟอนต์ของ Google นอกจากนี้ ตามที่ระบุไว้ข้างต้น รูปภาพไม่ใช่ตัวเลือกสำหรับเรา เนื่องจากอักขระจะถูกใช้ในพื้นที่ข้อความที่ผู้ใช้แก้ไขได้ - person lambshaanxy; 03.01.2013
comment
@jpatokal เพียงทดสอบด้วย <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro' rel='stylesheet' type='text/css'> - person Jukka K. Korpela; 03.01.2013
comment
อา-ฮ่า! ได้ผลแล้ว คุณต้องระบุ subset=latin-ext: <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro&subset=latin,latin-ext' rel='stylesheet' type='text/css'> - person lambshaanxy; 04.01.2013
comment
...ja terveisia Melbournesta Tampereelle ex-oppilaaltanne silloisessa TKK:ssa, maailma on pieni ;) - person lambshaanxy; 04.01.2013
comment
@jpatokal ใช่แล้ว TURKISH LIRA อยู่ในชุดย่อย latin-ext ความผิดฉันเอง. ฉันทดสอบบนคอมพิวเตอร์ที่ติดตั้ง Source Sans Pro ในระบบ (เป็นเวอร์ชันที่มี latin-ext) ด้วยเหตุนี้ ฉันจึงเข้าใจผิดเกี่ยวกับการมีอยู่ของ TURKISH LIRA ในรูปแบบตัวเอียงและตัวหนา ซึ่งมีจำหน่ายที่นั่นเช่นกัน ฉันแก้ไขคำตอบแล้ว และเพิ่มตัวอย่างโค้ดแล้ว - person Jukka K. Korpela; 04.01.2013
comment
@JukkaK.Korpela ป.ล. นี่เป็นปัญหาแบบอักษร ไม่ใช่ปัญหาเบราว์เซอร์ แม้ว่าเบราว์เซอร์บางตัว (IE) ยังคงมีปัญหาในการรับอักขระจากแบบอักษรที่แตกต่างกัน คุณหมายถึงอะไรกันแน่ ในที่สุดเราก็จะใช้แบบอักษรนี้ แต่อะไรคือสาเหตุทั้งหมดว่าทำไมจึงไม่ทำงานใน IE7 แต่ทำงานใน Firefox - person Magnilex; 05.07.2013
comment
@Magnilex ข้อผิดพลาด IE ที่ฉันอ้างถึงเกี่ยวข้องกับสถานการณ์ที่แบบอักษรหลักไม่มีอักขระและเบราว์เซอร์ควรพยายามรับจากแบบอักษรอื่น ไม่น่าจะเป็นปัญหาหากคุณระบุแบบอักษรที่ดาวน์โหลดได้ (เป็นแบบอักษรแรกในรายการ font-family) เบราว์เซอร์จะใช้งานแบบอักษรนั้น และมีอักขระที่ต้องการ - person Jukka K. Korpela; 05.07.2013

คุณสามารถส่งแบบอักษรของคุณเองผ่านทางเว็บได้ทาง: https://developer.mozilla.org/en-US/docs/CSS/@font-face และสร้างแบบอักษรของคุณเองผ่าน http://fontforge.org/

หากคุณใช้ XML และข้อกำหนดของคุณไม่อนุญาต คุณสามารถใช้เอนทิตีเพื่อกำหนดมาร์กอัปบางส่วนซึ่งรวมถึงมาร์กอัปรูปภาพในขณะนั้น (และอาจถูกแทนที่ด้วยอักขระ Unicode ในภายหลัง) หรือทำสิ่งที่คล้ายกันใน HTML ผ่าน JS หรือ CSS

person Brett Zamir    schedule 02.01.2013

ฉันคิดว่า 'ไม่ทำอะไรเลย' เป็นความคิดที่ดีที่สุด หากเบราว์เซอร์ / แบบอักษรของผู้ใช้ไม่รองรับ แสดงว่าผู้ใช้จำเป็นต้องอัปเกรด ทุกสิ่งที่คุณทำในฝั่งเซิร์ฟเวอร์จะถือเป็นการแฮ็ก (แม้ว่าการส่งแบบอักษรผ่าน CSS ก็ไม่ใช่ความคิดที่ไม่ดี) หากแอปของคุณรองรับ Unicode ที่กำหนดเองในข้อความที่ผู้ใช้ให้มา ในที่สุดแอปพลิเคชันของคุณก็จะเป็นไปตามข้อกำหนด เนื่องจากเบราว์เซอร์และอุปกรณ์รุ่นเก่าจะถูกแทนที่ด้วยเบราว์เซอร์ที่ใหม่กว่า

การอธิบายเรื่องนี้ให้หัวหน้าของคุณฟังเป็นส่วนที่ยาก

person artbristol    schedule 02.01.2013