2

ขยายขนาด Text ใน SVG ผ่าน CSS ไม่รอด T_T

กะว่าใส่ font-size ไปใน css แล้วจะได้ตัวอักษรตัวใหญ่เลย ลองเปิดใน Firefox, Chromium และ Opera ดูก็ตัวเล็กนิดเดียว ใช้ไม่ได้ T_T … แต่ว่าเปิดด้วย inkscape เป็นตัวใหญ่ซะงั้นนะ  งง

<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="8cm" height="8cm" viewBox="0 0 800 800"
xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<style>
text {
fill: blue;
font-size: 400;
}
</style>
</defs>
<text x="50" y="150" width="600" height="400">Test</text>
</svg>

งงแต่ก็แก้อะไรไม่ถูก -_-!

<?xml version=”1.0″ standalone=”no”?>
<!DOCTYPE svg PUBLIC “-//W3C//DTD SVG 1.1//EN”
http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd”&gt;
<svg width=”8cm” height=”8cm” viewBox=”0 0 800 800″
xmlns=”http://www.w3.org/2000/svg&#8221; version=”1.1″>
<defs>
<style>
text {
fill: blue;
font-size: 400;
}
</style>
</defs>
<text x=”50″ y=”150″ width=”600″ height=”400″ font-size=”100″>Test</text>
</svg>
0

ดูเว็บให้ลึกลงไปอีกหน่อยด้วย Firefox

เครื่องมือสำหรับ Firefox:

  • Geo ดูตำแหน่งทางภูมิศาสตร์ของหน้าเว็บ
  • Firebug เอาไว้ดูได้ว่า HTML หรือ CSS ในหน้าที่เราดูอยู่ ส่วนไหนทำให้เกิดเว็บหน้าตาแบบไหน
  • Header Spy เอาไว้ดู Header ปกติเราจะไม่เห็นถึงแม้จะดู source แต่ถ้าอยากรู้ว่าเกิดอะไรขึ้นบ้างก็น่าดู

เว็บที่น่าลอง:
identi.ca เว็บนี้ส่งตำแหน่งทางภูมิศาสตร์ที่อยู่ของเราลงไปด้วย

2

nsCoreFoundationBreaker

After talking to @kengggg, we are agree to implement NS_GetComplexLineBreaks without using deprecated UCFindTextBreak. So I try to rewrite nsCarbonBreaker by using Core Foundation API. However I don’t have Mac since 2008 so I didn’t test. In fact, I don’t even try to compile the code.

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * The contents of this file are subject to the Mozilla Public License Version
 * 1.1 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS" basis,
 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
 * for the specific language governing rights and limitations under the
 * License.
 *
 * The Original Code is mozilla.org code.
 *
 * The Initial Developer of the Original Code is
 * Theppitak Karoonboonyanan <thep@linux.thai.net>.
 * Portions created by the Initial Developer are Copyright (C) 2007
 * the Initial Developer. All Rights Reserved.
 *
 * Contributor(s):
 * - Theppitak Karoonboonyanan <thep@linux.thai.net>
 *
 * Alternatively, the contents of this file may be used under the terms of
 * either of the GNU General Public License Version 2 or later (the "GPL"),
 * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
 * in which case the provisions of the GPL or the LGPL are applicable instead
 * of those above. If you wish to allow use of your version of this file only
 * under the terms of either the GPL or the LGPL, and not to allow others to
 * use your version of this file under the terms of the MPL, indicate your
 * decision by deleting the provisions above and replace them with the notice
 * and other provisions required by the GPL or the LGPL. If you do not delete
 * the provisions above, a recipient may use your version of this file under
 * the terms of any one of the MPL, the GPL or the LGPL.
 *
 * ***** END LICENSE BLOCK ***** */

#include "nsComplexBreaker.h"
#include <CoreFoundation/CFStringTokenizer.h>
#include <CoreFoundation/CFBase.h>

// An imaginary nsCoreFoundationBreaker
// I don't have Mac since 2008 (Vee Satayamas)

void
NS_GetComplexLineBreaks(const PRUnichar* aText, PRUint32 aLength,
                        PRPackedBool* aBreakBefore)
{
  NS_ASSERTION(aText, "aText shouldn't be null");

  // I don't know whether CFStringCreateWithCharactersNoCopy will works.
  // Some conversions may be needed
  CFStringRef cfAText = CFStringCreateWithCharactersNoCopy(NULL, aText, aLength,
    kCFAllocatorNull);
  NS_ASSERTION(cfAText, "cfAText shouldn't be null");

  CFStringTokenizerRef tokenizer = tokenizerForString(cfAText);

  if(tokenizer)
  {
    CFStringTokenizerTokenType  tokenType; 
    // CFStringTokenizerGetCurrentTokenRange may have to be called before
    // CFStringTokenizerAdvanceToNextToken
    while(CFStringTokenizerAdvanceToNextToken(tokenizer) != 
      kCFStringTokenizerTokenNone) 
    {
      CFRange tokenRange = CFStringTokenizerGetCurrentTokenRange(tokenizer);
      aBreakBefore[tokenRange.location + tokenRange.length] = PR_TRUE;
    }
  }

  // Foundation.h must be included for CFRelease?
  CFRelease(cfAText);
}
1

double click เพื่อเลือกคำเดียวใน Firefox

ปกติกด double click ไปบน text แล้วมันควรเลือกคำเดียว แต่ว่า Firefox เวลาเจอภาษาไทยกลับไปเลือกก้อนใหญ่ๆ ผมก็เลยถามไปที่ Thai Linux/FOSS developers <a href="http://thep.blogspot.com/"ป๋าเทพบอกว่าน่าจะเป็น bug 425915

วันนี้ผมก็เลยลองดูสักหน่อย สำหรับกรณีปัญหาที่เกิดจากการเลือกคำด้วย double click ผมคิดว่า code ส่วนที่จะแก้คือ layout/generic/nsSelection.cpp ใน method ชื่อ nsTypedSelection::selectFrames โดยก่อนที่จะเรียก textFrame->SetSelectedRange(startOffset, endOffset, aFlags, mType); ค่า endOffset น่าจะหาโดยใช้ nsIWordBreak::FindWord

แต่ว่า nsIWordBreak ตอนนี้มี implementation แต่ nsSampleWordBreak ที่มี comment ข้างในว่า

// need to call Thai word breaker from here
// we should pass the whole Thai segment to the thai word breaker to
find a shorter answer

แต่ว่าไฟล์นี้ก็สร้างมาตั้งนานแล้วยังไม่มีการแก้ไขอะไร

ผมรู้สึกไม่มั่นใจเท่าไหร่ที่ต้องไปเรียก nsIWordBreak เองใน nsTypedSelection::selectFrames อยากจะถาม ท่านอื่นๆ ว่าน่าจะใช้ทางนี้หรือเปล่า หรือว่า nsIWordBreak ไม่ควรใช้ ถ้าหากควรใช้ ควรจะเอาไปใส่ใน nsTypedSelection::selectFrames หรือเปล่า?

ผมก็ถามไปใน group ด้วย

วันนี้ก็เอาไว้แค่นี้ก่อน ดึงจังหวะรอดู comment นิดนึง

2

เรียนนักพัฒนาเว็บ ผมขอความกรุณาให้ใช้แฟลชแต่น้อย

เรียนนักพัฒนาเว็บ ผมขอความกรุณาให้ใช้แฟลชแต่น้อย ปัจจุบันนี้ผมใช้งานระบบปฎิบัติการ GNU/Linux ที่ Adobe ก็ผลิตแฟลช player ให้มาเหมือนกัน แต่ว่าใช้งานภาษาไทยได้ไม่ค่อยสมบูรณ์ ดังนั้นการใช้แฟลชสำหรับเปิดวิดีโอจึงไม่เป็นปัญหา เพราะไม่ต้องแสดงข้อความภาษาไทย แต่ว่าการใช้แฟลชแสดงข่าวสาร หรือชื่อรายการที่เป็นตัวหนังสือ ก็มักจะแสดงผลไม่ได้บนแฟลชที่ใช้กับ GNU/Linux

ถึงแม้ว่าผู้ใช้ GNU/Linux จะเป็นคนส่วนน้อย แต่ก็อยากจะขอความเห็นใจจากท่านนักพัฒนาเว็บบ้าง

update: ตอนนี้เริ่มมีความหวังว่าเฟลชจะใช้ภาษาไทยได้ http://www.blognone.com/node/13944 ^_^

0

ใช้ Ubuntu เปิดเว็บ ThaiPBS แล้วเป็นแบบนี้

ผมดูผังรายการไม่ได้

thaipbs

มีวิธีแก้เปล่าครับ?

update: ได้คำตอบมาจาก @mrchoke แล้ว สรุปก็ประมาณว่า ต้องเปลี่ยนภาษาโดยปริยายเป็นภาษาไทย เท่านั้นก็จะพอดูได้ แต่ว่าสระบนล่าง และวรรณยุกต์ก็ยังคงหายไป

0

Range ใน Javascript

Range นี้ผมใช้ตอนอยากจะดูว่า ข้อความ อะไรที่ถูกเลือกอยู่บ้าง เวลาใช้ก็เขียนแบบนี้

var sel = window.getSelection();
if(sel.rangeCount > 0) 
    var r = sel.getRangeAt(0);

เขียน code แบบนี้ก็จะได้ r ที่เป็น range ออกมา อ่อผมใช้กับ Firefox 3.0.x และ Opera 10.x นะครับ IE 6-8 เข้าใจว่าใช้ไม่ได้ ส่วน chrome กับ safari ก็ยังไม่ได้ศึกษาเท่าไหร่

พอได้ range มา ผมก็รู้ได้ว่า element ไหน โดนเลือกตัวเริ่ม ตัวไหนตัวปิดโดยดูจาก r.startContainer และ r.endContainer ตามลำดับ แต่ว่าใน container อาจจะเป็น Text ก็อาจจะถูกเลือกแค่บางตัวในนั้นก็ต้องมาดู r.startOffset และ r.endOffset อีก

เท่านี้ก็คงพอใช้งานได้แล้ว …

0

Bug เกี่ยวกับการป้อนข้อมูลของ Firefox

หลังจากที่ลองลง Firefox รุ่นพัฒนาล่าสุดไป เพื่อที่จะลองดู bug ตามที่ป๋าเทพประกาศไว้.

วิธี reproduce (ทำให้ bug นั้นออกอาการอีกที) ทำแบบนี้จ๊ะ ใน $HOME/mozilla-central/objdir-ff-release/dist/bin

export XMODIFIERS="@im=BasicCheck"
export LC_ALL="th_TH"
./firefox

อาการที่เกิดคือสมมุติว่าเราพิมพ์ “เป่าปอย่างไร” เข้าไป แต่พึ่งมารู้ทีหลังว่าลืมพิมพ์ สระอี กับ ไม้เอก ให้เป็น “เป่าปี่อย่างไร” จะเลื่อน cursor ไปเติมทีหลังมันจะเติมไม่ได้. ตาม video นี้ที่น่าเสียดายว่า ถ่าย keyboard คู่ไปด้วยไม่ได้.

หลังจากลองดูแล้ว ส่วนตัวแล้วคิดว่า บัก นี้มีความสำคัญที่จะต้องแก้ ก็เลยกด vote ไปแล้ว ก็เพิ่มเข้ามาใน CC list เพื่อที่จะติดตามความก้าวหน้า

ช่วยแก้ ช่วย vote ฯลฯ ได้ที่ https://bugzilla.mozilla.org/show_bug.cgi?id=353776 ครับ

ป.ล. เหมือนจะยังขาดคน test อยู่ในครับ โดยเฉพาะบน Mac OS X และ Windows (บน GNU/Linux ก็เหมือนจะเงียบเหงาด้วย)

3

กลับมา build Firefox อีกแล้ว

ไม่ได้ build หรือทำอะไรต่างๆ นานากับ Firefox เสียนาน แต่ก็ไปเห็นเมลนี้ http://groups.google.co.th/group/thai-linux-foss-devel/browse_thread/thread/c571e26d6a1a8043 จริงๆ แล้วผมก็งงๆ ว่าลำดับภาษาไทยคืออะไร ลองอ่าน bug ก็ไม่ค่อยเข้าใจเท่าไหร่. แต่ก็ลองก่อนแล้วกัน แล้วลอง reproduce ตามข้อมูลที่มีอยู่ก็อาจจะเข้าใจขึ้นมาเอง.

แต่ก่อนอื่นต้องมี Firefox รุ่นล่าสุดใช้ก่อน สำหรับ Ubuntu นี้ build ง่ายมาก เดี๋ยวนี้เขาไม่ใช้ CVS แล้ว เปลี่ยนไปใช้ Hg แทน กว่าจะเอา source code มาได้หมดก็นานเหมือนเดิม (จะมากกว่าน้อยกว่าก็ไม่ทราบได้ เพราะผมหลับไปก่อน หลับจริงๆ นะ) วิธีตามนี้เลย https://developer.mozilla.org/En/Simple_Firefox_build

รอไปมันก็ build เสร็จเอง แต่ก็ดันมางงตอน run ทำไม่เป็นซะงั้น :-P. แต่ในที่สุดก็หาเจอ เข้าไปใน objdir-ff-release/dist/bin แล้วก็สั่ง ./firefox ก็ใช้งานได้เลย ^_^ (ทีแรกลืมปิดตัวเก่า พอปิดหมดแล้วตัวใหม่ก็ขึ้นมาสบาย)

4

เปิดเว็บไทใหญ่ได้แล้ว แต่อ่านไม่ออกนะ

taiyaiweb

เปิดเว็บดูได้แล้วกว่าจะลงฟอนท์ได้ ไป download มาจาก http://www.sitandread.net/archives/17 ที่ได้มาจากคุณ pongpan (ขอบคุณครับ).

ฟอนท์มาเป็น Font.exe เลย ถ้าใช้ Windows ก็คงสบาย แต่ผมไม่ได้ใช้ :-P. ก็เลยใช้ wine สั่ง wine Font.exe ก็ได้ฟอนท์ออกมาเอาไปใส่ใน $HOME/.fonts ปรับ Firefox มั่วๆ ตอนนี้ก็ยังงงอยู่ว่าปรับอย่างไร. ก็เปิดดูได้ซะงั้น.