World: r3wp
[View] discuss view related issues
older newer | first last |
Geomol 21-Dec-2006 [6466] | Chinese! :-) Cool! To better see the character, you can make it larger with this: view layout [ box 4 * 128x128 black effect [draw [ scale 4.0 4.0 anti-alias on ... followed by the rest of Jerry's program. |
Henrik 21-Dec-2006 [6467] | is it possible to use any drawing this way and not only kanji/chinese chars? |
Geomol 21-Dec-2006 [6468] | Someone should train a neural network to make calligraphy, then the chinese chars could maybe be made with less information. |
Maxim 21-Dec-2006 [6469x2] | eeek I'm affraid of the amount of neurons needed for such an endeavour especially since it would need one output for each pixel... :-) |
probably after a few years of training... it would be able to actually draw something ;-) | |
Henrik 21-Dec-2006 [6471] | I'm always thinking in generalization, creating an easy way to import vector drawings in rebol. |
Geomol 21-Dec-2006 [6472x3] | Henrik, if info about points or whatever the drawing is made of is available, then I see no problem. (If I understand you correctly.) |
Clipart is a good example. | |
What data format is used for clipart? An importer to DRAW dialect shouldn't be too big a problem, if the format is easily read. | |
Henrik 21-Dec-2006 [6475] | yes! I've always wanted to see all that kitchy clipart available to Windows users since Windows 3.1... |
Geomol 21-Dec-2006 [6476] | There is probably a lot stored in SVG (Scalable Vector Graphics) format. There's been talk about that format around here, I think. |
Henrik 21-Dec-2006 [6477] | would be nice to integrate this into postscript.r (wink wink) :-) |
Geomol 21-Dec-2006 [6478] | yeah! :-) |
Maxim 21-Dec-2006 [6479x5] | here is a draw glyph compressor :-) rule: [ any[ [copy val pair! ( val: first val bignum: max bignum max val/x val/y append bin to-binary to-char val/x append bin to-binary to-char val/y )] | [copy val word! (append bin select [curve #{81} line #{82} move #{83}] val )] ] ] |
the above glyph takes up 2223 bytes | |
oops... forgot to remove bignum check... | |
rule: [ any[ [copy val pair! ( val: first val append bin to-binary to-char val/x append bin to-binary to-char val/y )] | [copy val word! (append bin select [curve #{81} line #{82} move #{83}] val )] ] ] | |
to use it: bin: copy #{} parse draw-shape-block rule | |
Geomol 21-Dec-2006 [6484x2] | W3C link to this from their SVG page: http://openclipart.org/cchost/ so there's a lot of clipart in SVG format, I guess. SVG uses XML, so it should be easy to import using my RebXML packet. Problem is to figure out content of the format. |
Hmm, it seems to be a large format, so it's not a week-end project: http://www.w3.org/TR/SVG11/ | |
Henrik 21-Dec-2006 [6486] | isn't shadwolf working on something? |
Maxim 21-Dec-2006 [6487] | doesn't Cyphre already have an AGG SVG viewer |
Henrik 21-Dec-2006 [6488] | how is the tiger demo done? |
Geomol 21-Dec-2006 [6489] | There is a "SVG RENDERER" group here. |
Maxim 21-Dec-2006 [6490x2] | my god profiling stuff in REBOL in quite rewarding! |
my latest shape compressor is now 2.5 times faster, by using a list! instead of a binary while accumulating values, and then converting it to binary! | |
Geomol 21-Dec-2006 [6492] | Can you try a hash!? |
Maxim 21-Dec-2006 [6493] | there is no point... since I'm never accessing it... list! is the fastest insert series in REBOL |
Geomol 21-Dec-2006 [6494] | ok. Do you preallocate space for all the entries beforehand? So it doesn't have to expand along the way. |
Maxim 21-Dec-2006 [6495x4] | and since I'm only converting it to binary at the end, a lot of GC processing is alleviated. |
oh, and 1000 of the above glyphs now takes 4.5 seconds to compress... imagine if we had rebcode ! | |
lst: make list! 5000 rule: [ any[ [copy val pair! ( insert lst val/1/x insert lst val/1/y )] | [copy val word! (insert lst select [curve 130 line 131 move 132] val )] ] ] parse draw-shape rule bin: to-binary head lst clear head lst lst: head lst ; a small quirk in list! datatype... it MUST be reset to head after a clear. | |
and 1000 glyphs takes 8.95 MB of RAM which is quite optimal IMHO :-) | |
Ashley 21-Dec-2006 [6499] | How does that compare with: glyph: compress mold draw-blk load decompress glyph |
Maxim 21-Dec-2006 [6500x4] | didn't try, I was having fun with parsing ;-) |
using compress is 2 times faster but takes up 20% more ram | |
(in compression) | |
but there is no comparison in decompression... using decompress is 4 times faster so far.. I could probably squeze a bit more more out of parse... but not much. | |
Jerry 21-Dec-2006 [6504x4] | Maxim, it's not "tsai", it's "yung". The meaning is some kind of traditional chinese musical instruments. http://www.unicode.org/cgi-bin/GetUnihanData.pl?codepoint=93DE |
Henrik, it is possible to draw all the characters this way, not just Chinese characters. I am designing my own Text-Rendering System this way. | |
To condense the font data, there is a better way. Almost every Chinese character consists of many parts. if reusing the parts, a Chinese TTF file can be condensed from 4 MB to 100 KB. However, doing that would need lots of analysis of Chinese characters. That's would not be easy. Also needed is a part-combining engine. | |
For example, the left part of the "yung" Chinese character is "jin", meaning "gold" or "metal". The left part of any metal-related character is exactually the same as the left part of "yung". There are hundreds of such characters. And "metal" is just an example, we also have "water", "fire", "soil", "bird", "dog", "hand", "human", "tree" ... this list goes on and one. | |
Graham 21-Dec-2006 [6508] | Presumably that is how it is done. Divide into radicals, and further divide radicals into elemental strokes. |
Jerry 21-Dec-2006 [6509] | Graham. That's not how it is done. That's why the Chinese TTF file is so big, that's why in two chracters with the same radical, their radical part are not exactually the same pixel-by-pixel. These is a company doing so though. http://www.hifont.com/. |
Graham 21-Dec-2006 [6510x2] | but you can add a scaling factor .. |
and a direction | |
Jerry 21-Dec-2006 [6512] | Scaling factor and direction? I am afraid I dont understand what you mean. Anyway, I don't really have time to do the font-compression, and it's not practical for me for now. I am trying to change my bitmap-based text-rendering REBOL/View component to a vector-based one. I hope the performance will not cause too much pain. Considering the complexity of Chinese font, the rendering performance is what I am worring about. |
Cyphre 22-Dec-2006 [6513x3] | Guys, that's exactly the way I have done 'embedded font' in the quick-hack.r demo I reffered some time ago when talking about the fonts. Yes it is possible to make any kind of font that way. And yes, DRAW is really good as a 'optimal storage' of vectorial data ;) |
Jerry, I think you can implement own 'bitmap cache' when rendering the text usng vectorial glyphs. The performace will be much better in that case. | |
how is the tiger demo done? Yes, it's just converted SVG file to DRAW dialect, nothing more. | |
older newer | first last |