สืบเนื่องจากบทความ Smooth Font; AntiAlias จึงเกิดความคิดที่จะนำ GDI++ มาใส่ Notepad++ ในรูปแบบ Plugin และวันนี้ก็ทำเสร็จเรียบร้อย
NppGDIpp
Smooth edges for screen font in Notepad++
GDI++/FreeType2 (c) 2006-2011 drwatson http://www18.atwiki.jp/gdiplus2/
Released under FreeType license
Requirement
Download
Source code
https://github.com/nodtem66/NppGDIpp
หลังจากเราทำ Notepad++ ให้ใ้กล้เคียงกับ Textmate เราก็จะเห็นว่า ClearType ของ Window ทำให้ font ดูสบายตาขึ้นโดยภาพรวม แต่ก็ไม่สวยเท่า Quartz ของ Apple อยู่ดี
วันนี้ผมมาเสนออีกวิธีนั่นคือการใช้ GDI++ ซึ่งนักพัฒนาชาวญี่ปุ่นเขียนขึ้นมาเมื่อปี 2006
วิธีการ
Download GDI++
รัน gdippManager.exe
Customize
อ่าน option ได้จาก http://free.flop.jp/gdi++/src/gdi0808.txt
โดยส่วนตัว ต้องการแค่ render font เฉพาะแค่โปรแกรม notepad++.exe และอยากให้ font ตัวบางลง
จึงเขียน 3.ini ลงใน ./ini/ ดังนี้
[General]
Name=Smart
Icon=..\gditrayicon.icl,3
HookChildProcesses=0
HintingMode=1
AntiAliasMode=4
MaxHeight=150
FontLoader=0
FontSubstitutes=2
GammaMode=0
GammaValue=1.1
RenderWeight=1.1
Contrast=1.1
TextTuning=0
TextTuningR=-1
TextTuningG=-1
TextTuningB=-1
NormalWeight=2
BoldWeight=4
ItalicSlant=4
LcdFilter=2
LoadOnDemand=1
CacheMaxFaces=16
CacheMaxSizes=16
CacheMaxBytes=4194304
UseInclude=1
[IncludeModule]
notepad++.exe
สิ่งที่ทำคือตั้งค่า NormalWeight, BoldWeight, ItalicSlant, RenderWeight เพิ่ม UseInclude=1 และ IncludeModule ลงไป
การเปลี่ยนแปลง
จากข้างบน ภาพ 1 คือก่อน ClearType ภาพ 2 คือหลัง ClearType ภาพ 3 คือหลัง ClearType + GDI++
posted on 30 Oct 2011 15:44 by nodtem32 in General
ปัญหานี้ได้มาจาก Facebook ของพี่คนหนึ่งครับ
สิ่งที่ต้องระวังคือ เราไม่ทราบว่า เหรียญที่น้ำหนักแตกต่างนั้น เบาหรือหนัก กว่าเหรียญอื่นๆ
รับประกันว่ามีคำตอบ พักกับเรื่องน้ำท่วม มาลองเขย่าสมองเล่นดูครับ
ปล. คำตอบข้างล่างอาจจะไม่ใช่คำตอบที่ดีที่สุด และ ไม่ใช่คำตอบเพียงคำตอบเดียว ถ้าผิดหรือยังไงบอกด้วยนะครับ
ตอนแรกผมคิดเป็น Top-Down คือพยายามแบ่งทั้ง 13 เหรียญออกเป็นปัญหาย่อยๆว่าควรชั่งทีละกี่เหรียญก่อน
ปรากฏว่ายากที่จะหาคำตอบได้ แต่ได้บางอย่างมานั่นก็คือ
เราสามารถใช้ประโยชน์จากเหรียญ ซึ่งเรารู้แน่ๆ ว่ามันเป็นเหรียญปกติ
เช่น ถ้ามี 2 เหรียญ A B ที่เราไม่รู้ แต่เรารู้แน่ๆว่าเหรียญ # เป็นเหรียญปกติ ดังนั้น เราสามารถแยกได้โดยชั่งเพียงครั้งเดียวคือเอา A กับ # ชั่งกัน (A ? #) ถ้า A == # แปลว่า B คือคำตอบ
ตอนนี้เปลี่ยนใหม่(แต่ก็ไม่ออกอีก TT)ใช้การคิดแบบ Bottom-Up หรือแบบอุปนัย
คือแทนที่เราจะปัญหา 13 เหรียญโดยตรง เราลองแก้ปัญหา 1 เหรียญ 2, 3, 4 ... เหรียญไปเรื่อยๆครับ
เงื่อนไขคือสมมติว่าเรารู้เหรียญที่ปกติ(#)แน่ๆแล้ว 1 เหรียญ
จะเห็นว่า
ผมกลับมาคิดใหม่ว่า ชั่งครั้งแรกควรเริ่มจากกี่เหรียญดี
ถ้าแบ่งมากไปเช่น ชั่ง 6 กับ 6 แปลว่าเหลืออีกเพียง 2 ครั้งในการตรวจหา
ถ้าแบ่งน่อยไปเช่น ชั่ง 2 กับ 2 แปลว่าถ้ามันเท่ากัน จะเหลือการชั่งอีก 2 ครั้งกับ 13-4 = 9 เหรียญ
ดังนั้นมีให้เลือก 3 - 3 4 - 4 หรือ 5 - 5
ถ้าเลือกชั่งครั้งแรก 3-3 ปัญหากลายเป็น
ปัญหา 6 เหรียญในอีก 2 ครั้ง (โดยมีการชั่งครั้งแรกเป็นข้อมูลช่วย และมีเหรียญที่รู้แน่ๆว่าปกติ)
ปัญหา 7 เหรียญในอีก 2 ครั้ง (โดยไม่มีข้อมูลช่วย แต่มีเหรียญที่รู้แน่ๆว่าปกติ)
เลือกชั่งครั้งแรก 4-4 ปัญหากลายเป็น
ปัญหา 8 เหรียญในอีก 2 ครั้ง (โดยมีการชั่งครั้งแรกเป็นข้อมูลช่วย และมีเหรียญที่รู้แน่ๆว่าปกติ)
ปัญหา 5 เหรียญในอีก 2 ครั้ง (โดยไม่มีข้อมูลช่วย แต่มีเหรียญที่รู้แน่ๆว่าปกติ) ซึ่งเราเคยแก้ปัญหานี้ได้แล้ว
เลือกชั่งครั้งแรก 5-5 ปัญหากลายเป็น
ปัญหา 10 เหรียญในอีก 2 ครั้ง (โดยมีการชั่งครั้งแรกเป็นข้อมูลช่วย และมีเหรียญที่รู้แน่ๆว่าปกติ)
ปัญหา 3 เหรียญในอีก 2 ครั้ง (โดยไม่มีข้อมูลช่วย แต่มีเหรียญที่รู้แน่ๆว่าปกติ) ซึ่งเราเคยแก้ปัญหานี้ได้แล้วเช่นกัน
ถ้าเป็นคุณๆจะ้เลือกอะไร ปล. ในชีวิตจริง ถ้ามีคนยื่นข้อเสนอให้ 3 ทาง ทางเลือกของคุณมีมากกว่า 3 ทางเลือกเหล่านั้น
ถัดไป
posted on 23 Oct 2011 19:42 by nodtem32 in Exteen
วิธีแรก
ใช้ Google Web Font ตามบทความ ใช้ font สวยๆ บนเว็บได้ง่ายๆ ด้วย Google web fonts
ข้อดี: เร็ว มีคุณภาพ ถูกกฎหมาย
ข้อเสีย: ไม่มี font ภาษาไทย
วิธีที่สอง
Download font ที่ต้องการแล้วนำไปสร้างเป็น font บนเว็บผ่านเว็บไซต์เช่น
ข้อดี: เร็ว สะดวก
ข้อเสีย: บางอันติดตั้งยาก
สำหรับ FontSquirrel เวลา convert เหมือนจะเอาเฉพาะ latin script
ดังนั้นภาษาไืทยหายครับ
วิธีที่สาม
DIY ครับ
โดย...
แปลงจาก ttf เป็น eof เพื่อใช้ใน IE ใช้โปรแกรม eotfast หรือ ttf2eot
แปลงเป็น woff เพื่อใช้ใน Browser สมัยใหม่ ใช้ sfnt2woff
แปลงเป็น svg เพื่อในใช้ Browser บน smart phone ใช้ Batik
หมายเหตุ: อาจจะเลือกแปลงไปเป็นบางตัวเฉพาะที่อยากใช้ browser แสดงผล
จากนั้น upload font ไปยัง host ของเราจากนั้นใช้ css ดังนี้
@font-face {
font-family: 'ชื่อ font';
src: url('url ไปยังไฟล์.eot');
src: url('url ไปยังไฟล์.eot?#iefix') format('embedded-opentype'),
url('url ไปยังไฟล์.woff') format('woff'),
url('url ไปยังไฟล์.ttf') format('truetype'),
url('url ไปยังไฟล์.svg#ชื่อ font') format('svg');
font-weight: normal;
font-style: normal;
}
ข้อดี: ใช้ภาษาไทยได้
ข้อเสีย: เสียเวลา ติดตั้งยาก ช้า บางครั้งอาจโดนเรื่องลิขสิทธิ์
update 9 พ.ย. 2554
เป็น opensource project ต่อจาก Jerboa
Jerboa จะพัฒนาทั้ง layout และ text editor ไปด้วย
ในขณะที่ wall0 จะพัฒนาแค่ช่วย layout เท่านั้นแล้วนำไป bridge เข้ากับ text editor ตัวอื่นๆ
text editor ที่ตอนนี้คิดไว้คือ aloha editor ครับ
เมื่อพัฒนาเสร็จจะเอามาลองที่ exteen นะครับ
Contributors
ถ้าคุณคือ
Web designer
Front-end programmer
Tester
และ ถ้าคุณมี idea เจ๋งๆที่จะเปลี่ยนโลกของ editor ที่ใช้ในการเขียน blog
ร่วมเป็นส่วนหนึ่งของ project นี้ได้
ผู้ใดอยากเข้าร่วม ติดต่อ @nodtem66 ครับโดยรายชื่อนักพัฒนาจะขึ้นที่ตรง Contributors นะครับ
ความคืบหน้า
8/11/2011
remove require.js
add ApacheAnt build.xml script
add pure python build.py script for alternative build file
add drag, resize, and Aloha compatible
29/10/2011
add new algorithm to render html text
27/10/2011
add contributors section from Github API
26/10/2011
add History Class
add new Lib (getPropStyle, getPageX, getPageY, getParentX, getParentY)
24/10/2011
Start Wall0 with require.js !!!
22/10/2011
UnitTest Lib with IE6,7,8 Firefox, and GoogleChrome passed
posted on 10 Oct 2011 00:56 by nodtem32 in CSS , Exteen
ควรศึกษา CSS ฉบับยืนอ่าน มาก่อน
สำหรับเรื่อง background นั้นเป็น property ที่สำคัญมีอยู่ 4 อันนั่นคือ
สีพื้นหลัง **
ภาพพื้นหลัง **
ตำแหน่งภาพพื้นหลัง
Pattern ภาพพื้นหลัง **
โดยทั้งหมดนั้นสามารถเขียนได้แบบประจักษ์แจ้ง(explicit) หรือแบบโดยนัย(implicit) พูดง่ายๆคือแบบเต็มหรือแบบย่อนั่นเอง
การเขียนแบบย่อ** **property ที่ควรรู้
โครงสร้างคำสั่ง
background-color: สี หรือ #RGB;
ตัวอย่าง
background-color: red; //สีพื้นหลังสีแดง
background-color: #0cf; //สีพื้นหลังสี #00ccff
โครงสร้างคำสั่ง
background-image: url(ที่อยู่ของรูปภาพพื้นหลัง);
ตัวอย่าง
background-image: url(http://g.exteen.com/i/m/icon_filetype.gif); //ภาพพื้นหลัง
โครงสร้างคำสั่ง
background-position: ตำแหน่งX ตำแหน่งY;
ตัวอย่าง เช่นมีรูปข้างล่าง
background-position: 0 0; //รูป background เริ่มจากพิกัด(0,0)
background-position: 0 -32px; //รูป background เริ่มจากพิกัด(0,-32)
background-position: 0 -64px; //รูป background เริ่มจากพิกัด(0,-64)
โครงสร้างคำสั่ง
background-repeat: value;
ตัวอย่าง
background-repeat: no-repeat; //รูป background ไม่ซ้ำ
background-repeat: repeat-x; //รูป background ซ้ำตามแกน x
background-repeat: repeat-y; //รูป background ซ้ำตาม แนวแกน y
การเขียนอย่างย่อ
โครงสร้างคำสั่ง
background: สี url(รูปภาพ) Pattern ตำแหน่งx ตำแหน่งy ;
ตัวอย่าง
background: red url(http://www.w3schools.com/cssref/smiley.gif) no-repeat top center;
//ภาพ
สำหรับ css3 นั้นมีอะไรใหม่ๆ เจ๋งๆ เยอะมาก ลองค้นหาดูนะ
posted on 09 Oct 2011 22:43 by nodtem32 in CSS , Exteen
ในบทความนี้ขอพูดเฉพาะพื้นฐานเกี่ยวกับอักษรของ css
และควรศึกษา CSS ฉบับยืนอ่าน มาก่อน
สารบัญ
ปรับขนาดอักษร **
เปลี่ยนสีอักษร **
เปลี่ยนลักษณะอักษร **
เปลี่ยนความหนาอักษร
เปลี่ยนความสูงบรรทัด
เปลี่ยนระยะห่างตัวอักษร
เปลี่ยนระยะห่างคำ
ระยะย่อหน้า
**property ที่ควรรู้
โครงสร้างคำสั่ง
font-size: ขนาด;
ตัวอย่าง
font-size: 16px; //ขนาด 16 pixel
font-size: 23px; //ขนาด 23 pixel
โครงสร้างคำสั่ง
color: สี หรือ #RGB;
ตัวอย่าง
color: blue; //ให้สีเหมือน #0000ff
color: #c03dfe; //สี #c03dfe
color: #0cf; //ให้ผลเหมือน #00ccff
โครงสร้างคำสั่ง
text-decoration: value;
ตัวอย่าง
text-decoration: underline; //ขีดเส้นใต้
text-decoration: overline; //ขีดเส้นบน
text-decoration: line-through; //ขีดฆ่า
text-decoration: none; //ไม่ขีด
โครงสร้างคำสั่ง
font-weight: value;
ตัวอย่าง
font-weight: bold; //ตัวหนา
font-weight: normal; //ตัวธรรมดา
โครงสร้างคำสั่ง
line-height: ขนาด;
ตัวอย่าง
line-height: 10px; //ความสูงบรรทัด 10px
line-height: 150%; //ความสูงบรรทัด 150%
โครงสร้างคำสั่ง
letter-spacing: ขนาด;
ตัวอย่าง
letter-spacing: 10px; //ระยะห่างอักษร 10px
letter-spacing: 0.5em; //ระยะห่างอักษร 0.5em
โครงสร้างคำสั่ง
word-spacing: ขนาด;
ตัวอย่าง
word-spacing: 8px; //ระยะห่างระหว่างคำ 8px
word-spacing: 13pt; //ระยะห่างระหว่างคำ 8pt
โครงสร้างคำสั่ง
text-indent: ขนาด;
ตัวอย่าง
text-indent: 13px; //ย่อหน้า 13px
text-indent: 1em; //ย่อหน้า 1em
**หมายเหตุ และยังไม่รวม css3 อีกมากมาย