10 November 2010
The United Colours of Libre: Take Two
One change for the better, is that Libre Maroon has been changed to Libre Orange.
The color palette can be downloaded from http://toki-kantoor.pastebin.com/AXTzeUpe
09 November 2010
The ultimate colour palette for LibreOffice
The resulting colour palette requires roughly one gigabyte of disk space.
#### code starts here ###
#!usr/bin/python
import sys, string
def bump_case(bump_string, bump_direction):
bump_string, atribute_data = clean_string(bump_string, bump_direction)
if atribute_data == "string":
return_string = bump_string
elif atribute_data == "unknown":
bump_string = bump_string[0]
bump_string = convert_unknown_to_string(bump_string)
elif atribute_data == "integer":
return_string = convert_integer_to_string(bump_string)
else:
print " bump_case(bump_string, bump_direction) can not process the following "
print bump_string
print " as it is not a string "
print " It appears to be the following: ", atribute_data
return return_string
def convert_integer_to_string( integer_string ):
integer_string = str(integer_string)
checkpoint = len(integer_string)
return_string, attribute_type = clean_string(integer_string)
return return_string
def convert_unknown_to_string( unknown_string ):
some_string = unknown_string[0]
return_string, attribute_type = clean_string(some_string, "lower" )
return return_string
def clean_string(some_string, bump_direction):
try:
check = len(some_string)
new_string = string.strip ( some_string )
direction_check = string.lower(bump_direction)
if direction_check == "upper":
check_string = string.upper ( new_string)
else:
check_string = string.lower ( new_string )
attribute_type = "string"
except TypeError:
try:
check_string = int(some_string)
attribute_type = "integer"
except:
print "Unknown Error at clean string"
print some_string
print "This is neither a string, nor an integer"
attribute_type = "unknown"
check_string = some_string
def true_false(message_string):
is_valid = "false"
while is_valid == "false":
print_headline(message_string)
print ( 'If this is correct, type "yes". ' )
# , otherwise type "no". ')
temp_string = raw_input()
temp_string = string.strip(temp_string)
temp_string = string.lower(temp_string)
if temp_string in [ "yes", "true", "0", "+", "ja", "y", "good", "g" ]:
check_point = "true"
is_valid = "true"
elif temp_string in [ "no", "false", "1", "-", "nie", "n", "bad", "b" ]:
check_point = "false"
is_valid = "true"
else:
is_valid = "false"
return check_point
def read_input_data( message_string, validation_string ):
check_point = "false"
while check_point == "false":
clear_screen ( 5 )
print message_string
input_string = raw_input()
input_string = string.strip(input_string)
temp_string = ( validation_string + " " + input_string )
check_point = true_false( temp_string )
return input_string
def in_range( check_this_number, low_number, high_number ):
check_this_number = abs(check_this_number)
if check_this_number > high_number:
check_this_number = check_this_number / high_number
if check_this_number < low_number:
check_this_number = check_this_number + high_number
return check_this_number
# file read / write functions
def get_lines_of_file(var_which_file):
check_the_file = (var_which_file, "lower")
try:
input_file_handle = open(check_this_file , "r")
data = input_file_handle.readlines()
break_line_count = len(data)
except:
break_line_count = 0
return break_line_count
def print_a_file(var_which_file, file_suffix, temp_line):
check_point = string.strip(file_suffix)
if check_point == "":
file_suffix = "data"
check_point = string.strip(var_which_file)
if check_point == "":
var_which_file = "default"
file_name = validate_file_name ( var_which_file, file_suffix )
print_to_this_file = file_name
write_line = string.strip(str(temp_line))
data_check = convert_unknown_to_string(print_to_this_file)
print_to_this_file = data_check
check_point = len(write_line)
if check_point > 1:
line_count = get_lines_of_file(print_to_this_file)
if line_count > 0 :
kountry_datafile = open(print_to_this_file, "w")
kountry_datafile.write(write_line + "\n")
kountry_datafile.close()
kounter = 1
else:
kountry_datafile = open(print_to_this_file, "a")
kountry_datafile.write(write_line + "\n")
kountry_datafile.close()
kounter = 0
else:
kounter = 0
return kounter
def validate_file_name( file_prefix, file_suffix ):
file_prefix = clean_string(file_prefix, "lower")
file_suffix = clean_string(file_suffix, "lower")
if len(file_prefix) > 8:
file_prefix = file_prefix[0:7]
if len(file_suffix) > 4:
file_suffix = file_suffix[0:3]
dot = "."
file_suffix = (dot, file_suffix )
return_name = ( file_prefix + file_suffix )
return return_name
def grab_a_file(var_which_file, file_suffix):
file_name = validate_file_name ( var_which_file, file_suffix )
print_to_this_file = file_name
line_count = get_lines_of_file(print_to_this_file)
if line_count > 0 :
data = open(print_this_file, "r")
datum = data.readlines()
check = len(datum)
if check < line_count:
print " File length mismatch "
elif check > line_count:
print " File length mismatch "
else:
print "file has zero or less lines in it"
print line_count, " is the line_length"
print print_to_this_file
datum = ""
return datum
def initialize_data(size_of_data_field):
initialized_number = -11111
return_list = [ initialized_number ] * size_of_data_field
return return_list
def delete_blanks(check_string):
working_string = string.strip(check_string)
data_length = len(working_string)
date_length = int(data_length)
new_string = " "
for s_checking in range (0, data_length):
am_on = s_checking
s_data = working_string[am_on]
if s_data <> " ":
new_string = (new_string + s_data)
new_string = string.strip(new_string)
return new_string
#
# main sequence starts here
#
def create_hexadecimal_palette(checking_data):
output_file = "ultimate_color_palette.soc"
data_range_2_is = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F"]
palette_string_1 = '
for first_data in data_range_2_is:
for second_data in data_range_2_is:
for third_data in data_range_2_is:
for fourth_data in data_range_2_is:
for fifth_data in data_range_2_is:
for sixth_data in data_range_2_is:
check_1 = first_data
check_2 = second_data
check_3 = third_data
check_4 = fourth_data
check_5 = fifth_data
check_6 = sixth_data
temp_string = (check_1 + check_2 + check_3 + check_4 + check_5 + check_6)
check_string = (palette_string_1 + temp_string + palette_string_2 + temp_string + palette_string_3)
check_point = print_a_file ( output_file, "data", check_string)
print check_string
return check_point
checking_data = "junk string"
checkpoint = print_a_file ("start_time", "data", checking_data)
b_color = create_hexadecimal_palette(checking_data)
print b_check_data
checkpoint = print_a_file ("end_time", "data", checking_data)
print "The End"
### code ends here ###
Two minor details:
- The contents of the file soc_head https://docs.google.com/leaf?id=1sqTcJuFxh8kmZcvBbSrmMWyiTSwVtaF_uFtewVbXfU0&sort=name&layout=list&num=50 needs to be added to the beginning of the file that the script creates;
- The contents of the file soc_base https://docs.google.com/leaf?id=1LIkr1-YGFMCIzaM0gNMpL7rajeBMU6Jhe6_5quKKtrQ&sort=name&layout=list&num=50 needs to be added to the end of the file that the script creates;
03 November 2010
A Short List of A11Y Requirements
A Short List of A11Y requirements.
- All input can be done by voice;
- All input can be done by a joystick;
- All input can be done by a Perkins Keyboard;
- All input can be done by a mouse;
- All input can be done using an 78 key keyboard;
- All input can be done on a touchpad;
- All input can be done using a virtual keyboard;
- All output can be read on a Braille display monitor;
- All output is in an audio format;
- All output can be read on either a CRT or LCD monitor;
- All output can be felt on a touchpad;
- The display size of the data that is presented to them:
- This includes screen magnification on CRT or LCD monitors;
- This includes screen magnification on touchpads;
- This includes all tactile devices;
# The display size of the data that is presented to them:
- This includes screen magnification on CRT or LCD monitors;
- This includes screen magnification on touchpads;
- This includes all tactile devices;
- This includes screen readers;
- This includes self-voicing functionality;
- This includes all audio output devices;
- Icons must be changeable both individually, and as a group;
- Colours used anywhere in the program must be user changeable;
- A Moon Printer;
- An audio file;
- A Braille printer;
- A "normal" printer:
- Ink jet printer;
- Dot matrix printer;
- Laser printer;
- Thermal ink printer;
There is an extension that tries to do output to Braille. The major issue with it, is that it only works for one or two languages.
I have read about an extension that outputs a text document to mp3 format. I do not know how far it progressed.
Arguably, A11Y also requires the program to be able to print out the following file formats:
# Plain text:
- ANSI/ASCII;
- UTF-8;
- UTF-16;
- UTF-32;
- Other common plain text character encodings;
- PDF;
- Postscript;
- Mobi;
- ePub;
- HTML 5.0;
- DAISY;
- DjVu;
- AZW (Kindle);
- PDB (eReader);
- Other common eBook file formats;
- PNG;
- SVG;
- JPEG;
- GIF;
- Other common graphical file formats;
# Audio file formats:
- OGG;
- WAV;
- MP3;
- MP4;
- WMA;
- MPC;
- FLAC;
- AIFF;
- VOX;
- AU;
- Other common audio file formats;
I think that most of these could be done as extensions that the user installs, if they want/need/require the specific output capability. Some of these, involve file formats that are patented, trademarked, under copyright, or otherwise blemished.
02 November 2010
United Colours of Liberty . SOC
http://luxate.blogspot.com/2010/10/united-colors-of-liberty.html
I haven't figured out how to display XML markup in this blog. :(
The current proposal at http://wiki.documentfoundation.org/Marketing/Branding#Colors can be found as a Google document at https://docs.google.com/document/d/1v_7esM6avaNBEzyYvl9wlnW8k50Ziqf0fAzvcK2Dmzg/edit?hl=en&authkey=CIOLvBg that is ready to cut and paste as a new palette. SOC.
I added four colours:
- Black;
- White;
- Gray: RGB: 192 192 192
- Silver: RGB: 123 123 123
draw:color draw:name
And remember the less than sign that precedes "draw"
#####
Update added 10 November 2010.
I just discovered pastebin.com
You can download the soc from http://toki-kantoor.pastebin.com/CCbPhNFz
The version at pastebin has one modification:
- The color names have been changed from "Libre" to "1st Libre".
30 October 2010
Alternative Names
Alternative Names
Languages that OOo treats as dialects
Bosnian
Serbian
Dialects that OOo treats as One language.
Kurdish
Kurmanji
Sorani
Malay
Bahasa Indonesia
Bahasa Malaysia
Bahasa Kelantan
Peranakan
Jawi
Dialects that OOo treats as different Languages
Norwegian
Bokmål
Nynork
Glossary
Glossary
'Phags pa
This is an abugida, whose writing direction is from top to bottom, left to right.
Abjad
This writing system consists of glyphs that denote consonants only.
Abugida
This writing system consists of glyphs that denote consonants followed by a particular vowel, and in which diacritics denote the other vowels
Alibata
This is an abugida, whose writing direction is from the bottom up, left to right.
Alphabet
This writing system uses glyphs that denote either vowels, or consonants.
Berber
This is an abjad, whose writing direction can be in any direction.
BiDi
See Bi-Directional language.
Bi-Directional Language
This refers to a language that is read from right to left. This is a typical feature of Semitic writing systems.
Boustrophedon
A writing system in which the direction of writing changes at the end of each line. It the first line is from right to left, the second line will be from left to right. This is a typical feature of early Mesopotamian writing
Carian
This is an alphabet, whose writing direction can be in any direction.
Chinese, Simplified
I am arbitrarily defining this as being the glyphs that have been introduced in The People's Republic of China, since the communist takeover.
Chinese, Traditional
I am arbitrarily defining this as being the glyphs that were not introduced by the The People's Republic of China, since the communist takeover.
Clicks
These are found in Khosian and Bantu languages. Unicode representations are:
dental click ǀ Ux01C0
Retroflex click ǃ Ux01C3
Coptic
This is an alphabet, whose writing direction is from left to right.
Complex Text Layout
This is a writing system in which the characters change shape, according to the characters that they are next to. This is a typical feature of Indic Valley Scripts.
Consonant
A sound in spoken language that is characterized by a constriction or closure at one or more points along the vocal tract.
CTL
See Complex Text Layout
Diacritic marks
These are marks added to a letter, that change the phonetic meaning of the letter.
Acute Accent ´
Anunaasika ˙
Anusvaara .
Apostrophe '
Bar
Breve ˘
Caron ˇ
Cedilla ¸
Circumflex ^ UxOO5E
Comma ,
Diaresis ¨
Dot
Double Acute ˝
Grave Accent ` Ux0060
Háček ˇ
Kroužek °
Kroužek ͦ Unicode U+0366
Macron ¯
Middle Dot ·
Ogonek ˛
Ring ͦ Unicode U+0366
Slash /
Spiritus Asper ̔ Unicode U+0314
Spiritus Lenis ̕ Unicode U+0315
Tilde ~ Unicode
Titlo Unicode U+0483
Umlaut ¨
Virgule /
Egyptian demotic
This is a logosyllabary, whose writing direction is from right to left.
Esperanto
Artificial Language created in the late 19th century, as a second langauge for everybody. It draws its vocabulary mainly from European languages.
Evidential Grammar
A grammar that requires the sentence to include the evidence supporting the statements within the sentence.
Featural Writing System
A writing system in which the shape of the glyphs correlate with distinctive features of the segments of the language.
G11N (Globalization)
Globalization. The process of making a product, or process competitive on a Global scale.
Globalization
See G11N
Hanunoo
This is an abugida, whose writing direction can be in any direction.
Harakat
These are the vowel marks that are used with the Arabic Writing System.
Hebrew
This is an abjad, whose writing direction is from right to left.
Hittite
This is a logosyllabary, whose writing direction can be in any direction.
I18N (internationalization)
Internationalization. Creating documents, software and the like, to make it easy to translate and localize the software,or documents for into other languages, of for use by different cultures.
Input Method Editor
A utility that enables text entry from sources other than a keyboard. These are used for Indic Valley and East Asian language input.
IME
See Input Method Editor
Internationalization
See i18N
Jawi
Writing system used for writing Malay, based upon the Arabic Alphabet.
Kana
Term used to refer to either, or both Hiragana, and Katakana writing systems.
L10N (Localization)
Localization: The process of converting documents, software, and similar items to be easily understood by a specific culture. Whilst this often involves translation, that is not a necessary component.
Language
A dialect with an army behind it.
Latin
This is an alphabet, whose writing direction is left to right. It is used for most West European languages.
Lepcha
This is an abugida, whose writing direction is from top to bottom, right to left. Omniglot classifies it as a syllabic alphabet whose writing direction is left to right. This is one example of how scholars disagree with how to classify languages, and writing systems.
LibO
This is an abbreviation for LibreOffice.
Linear A
This is a logosyllabary, whose writing direction is from left to right.
Localization
See L10N
Logosyllabary
This is a writing system which uses glyphs to denote words, morphemes, or syllables.
Manchu
This is an alphabet, whose writing direction is from top to bottom, left to right.
Mende Kikakui
This is a syllabary, whose writing direction is from right to left.
Meroïtic
This is an abugida, whose writing direction is from right to left. The hieroglyphic form is written from top to bottom, in columns.
Mongolian
This language uses the Arabic writing system, but with vertical, rather than horizontal lines.
N'ko
This is an alphabet, whose writing direction is from right to left.
Nikkudim
These are the vowel points that are used in Hebrew. [Unicode U+05B0 through U+05BD]
Patah
Segol
Hireq
Qames
Qibbus
Qames
Sere
Holem
Qames-He
Sere-Yod
Hireq-Yod
Holem-Vav
Sureq
Shewa
Hatep-Patah
Hatep-Segol
Hatep-Qames
Matheg ֽ ֽֽֽ Unicode 0x5BD
Noun Class Grammar
A language whose grammar uses Noun Classes.
Noun Classes
Nouns are associated with one of ten or more different “classes”.
Nushu
This is a logosyllabary, whose writing direction is from top to bottom, right to left. This language is written by females only.
Ogham
This is an alphabet, whose writing direction is bottom to top, Boustrophedon.
OOo
Abbreviation for OpenOffice.org.
Open Office
A common, but incorrect name for OpenOffice.Org.
Open Office is a registered trade mark for an email utility.
Oriya
This is an abugida, whose writing direction is from left to right.
Orkhon
This is an abjad, whose writing direction is from bottom to top, right to left.
Pahawh Hmong
This is quasi-abugida, whose writing direction is from left to right. [Vowels, not consonants are emphasized.]
Punctuation Marks
Most punctuation marks used by the different writing systems are listed here.
Apostrophe ' Ux0027
Bang (English) ! Ux0021
Colon : Ux003A
Comma , Ux002C
Comma (Arabic) ، Ux060C
Dash ‐ Ux2010
Double Acute ̋ Ux030B
Em Dash — Ux2014
En Dash – Ux2013
Final Quotes " Ux202C
Hyphen - Ux002C
Initial Quotes " Ux201C
Interrobang ‽ Ux203D
Paseq (Hebrew) ׀ Ux05C0
Period . Ux002E
Period (Arabic) ۔۔۔ Ux06D4
Q Mark (Arabic) ؟ Ux061F
Q Mark (Greek) ; Ux037E
Q mark (Spanish) ¿ Ux00BF
Quotation mark " Ux0022
Reversed SemiColon ⁏ Ux204F
Reversed Solidus \ Ux005C
SemiColon ; Ux003B
SemiColon (Arab) ؛ Ux061B
Virgule / Ux002F
The Arabic Period will only be correctly displayed at the end of sentence in the Arabic writing system, hence the series that is displayed here.
Proto-Elamite
This is a logosyllabary, whose writing direction is from top to bottom, left to right.
Rongo-Rongo
This is a boustrophedon writing system, with the distinguishing feature that alternate lines are "upside down".
Ruby
This usually is a pronunciation guide to a word, usually written below, or to the right of the word. Sometimes a definition of the word is provided, instead of the pronunciation.
Syllabary
A writing system whose glyphs denote syllables.
Tagbanwa
This is an abugida, whose writing direction is from the bottom up, left to right.
Tengwar
This is a featural script, whose writing direction is from left to right.
Toki Pona
A conlang that has 118 official words, and roughly 1 500 “borrowed” words, which are mainly place names, or the names of various languages.
Triple O
Rarely used as an abbreviation for OOo, its use is greatly discouraged.
Tsalagi
This is a syllabary, whose writing direction is from left to right.
Ugaritic
This is an abjad, whose writing direction is from left to right.
UI
See User Interface
Uighur
This is an abjad, whose writing direction is from top to bottom, left to right.
User Interface
a) The part of the program that interacts with the user.
b) The icons, text and graphical elements of the program that the user sees.
Vowel
A sound in spoken language that is characterized by an open configuration of the vocal tract.
Vowel Points
These are diacritic marks used to indicate vowels, in abjads. See also: Nikkudim, Harakat.
Xhosa
Bantu language spoken in southern Africa. The most notable feature of this language are the clicks, which were probably borrowed from !kung.
Zulu
Bantu language spoken in Southern Africa, along the Indian Ocean.
!Kung
Khoisan language spoken in Namibia. The most notable feature of this language are the clicks. It is often referred to as "The click language."
LibreOffice in my Language
Localization is the process of configuring software for a specific language, in a specific geographical region.
The usual process of localization is to have the Locale, Writing System, Font(s), Code Range(s) used, User-interface, Help Files, Documentation, Input Method Editor, Spell Checker, Thesaurus, Hyphenation Checker, Grammar Checker, and Templates in the target language.
Jitendra Shah, professor at Veermata Technological Institute (VJTI) and project leader of IndicTrans, wrote:
The localization experience as "being able to communicate in one's language within a culturally familiar environment. As a sibling of internationalization, it is also a way to bring to India's people the winds of world experiences and world's opportunities, thereby giving the local talent a scope to express at the global platform."
He also listed the following as necessary ingredients for a localized experience:
Fonts
Localized user interface -- i.e. locale, translations
Localized theme of the operating system -- colors, icons, etc.
Dictionaries and thesaurus
Help and documentation in local language
Keyboards in local language
Ability to make printouts in local language
A good collection of useful applications in the local language
Localized support resources for local language computing -- hardware and software support, developers, etc.
Continuous innovation and improvement!
What OOo Lacks
What OOo Lacks
This is the list of major features that people complain about not having with OOo. (Cyan text was written in 2004. Brown text was written in 2010.)
Digital Rights Management Tools
The only recommendation is to encrypt everything using GnuPGP, or similar tool.
DRM has repeatedly shown itself to be a failure that is defective by design. If you do not want unknown third parties to be able to read content created with LibreOffice, password protect it, and then encrypt it using GnuPGP, or similar encryption software.
Style Checker
In theory, one, or more of the grammar checkers could be modified to provide this function.
None of the grammar checkers for LibreOffice have modifications for style checking. There are two style checkers for OpenOffice.org 2.x, but they do not work with OpenOffice.org 3.x
Calendar
OOExtras had a calendar template for the database component of OOo. I can not currently find it, nor the Calendar template I thought I had downloaded. The recommendation is to use something such as Sunbird.
Some builds of Go-Oo can utilize the Calendaring capabilities that are found in Evolution.
Address Book
OOExtras had a PIM template for the database component of OOo. Another option is to use the one that comes with Sunbird.
Some builds of Go-Oo can utilize the PIM capabilities that are found in Evolution.
Mail Reader
The recommendation is to use a stand alone mail reader, such as Thunderbird.
Web Browser
The recommendation is to use a stand alone web browser, such as Firefox.
Stand Alone Presentation Viewer
The theory is that OOo is small enough, that a separate viewer is not necessary.
Project Organizer
Once upon a time, OOExtras had a Project Organizer template for the database component of OOo. I couldn't find it, when I needed one in January 2005. I ended up abusing Calc as a Project Organizer.
GanttChart for OOo at http://www.ooomacros.org/user.php#175388 is a macro for OOo 1.x and OOo 2.x.
PERT Chart for OOo at http://www.ooomacros.org/user.php#184651 is a macro for OOo 1.x and OOo 2.x.
Gantt Chart listed at http://extensions.services.openoffice.org/en/project/gantt-chart is an Excel template.
The OpenOffice.org Project Management Tool Project does not appear to have been updated since 2005.
A Dictionary - with a *define* button
This functionality is still absent.
Bibliographic Tools
What people are really complaining about, is that OneNote does not work with OpenOffice.org.
The All Singing All Dancing Version.
I also wrote Stylist: The Components and their Attributes. This document was almost 1 000 pages long, and covered more than most people wanted to know about creating and modifying styles. As best as I can determine, this document is no longer available on the Internet. I no longer have my master copy.
This blog is the updated version of those two documents.
I'll also cover extensions, style sheets, and other things I found useful.