U8glib: Graphics Lib for LCDs and OLEDs

The device U8GLIB_MINI12864 is close. Thank you. The image is still shifted five pixels to the left, with the far right edge filled with garbage pixels. Contrast is set and works but seems to be fixed.

I’ve attempted to read the source code and the datasheets registers and I must admit I don’t understand what I’m looking at. For what it’s worth I think this is the datasheet for the controller http://www.lcd-module.de/eng/pdf/zubehoer/uc1701.pdf

However I did experiment with the u8g_dev_uc1701_mini12864.c file. I messed with this line

  0x0a1,		/* ADC set to reverse. Was a0 now a1 */

I found if I change this value from “a0” to “a1” the image is reversed but does not have pixels shifted.

I also played with this device:

U8GLIB_LM6059 u8g(13, 11, 10, 9);                    // SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9

It does not have contrast adjustment (image is almost impossible to view) and has the top and bottom of the image swapped, but again the pixels are not shifted.

I will post photos shortly.

More progress. It works as it should if I use:

Line 51:  0x0a0,		/* ADC set to reverse */
Line 52:  0x0c8,		/* common output mode */
Line 60:  0x027,          /* contrast value, EA default: 0x01f */

"c8" Flips the screen 180 and so far appears to work without fault. I'm guessing this is the proper or intended orientation. The contrast value just makes the screen a little easier to read. Note I also returned ADC to "a0".

I feel a little stupid. I’ve just re-read some of this the messages in this thread and I must have missed at least page 4. It’s the same typical types of issues. I feel I should have experimented more before asking for help.

Here's the photos:
Imgur
Imgur

It would be nice to be able to control the contrast within the main program but I'm unsure how to do this.

My next change is fonts like koyaanisqatsi posted. I’d like to be able to draw my own as bitmaps and then convert to fonts. I can draw fonts no problem (I have very small and very large fonts in mine for a specific project) but I’m lost on converting them. I need fixed height and widths and some only numbers.

Updated with more info

Hi

I have applied your setting to the attached pre-release. I also added code for contrast setting. Hopefully everything works as expected. Feedback would be great. Thanks for supporting u8glib so far (Karma given...).

Fonts: If your font is available as .ttf or .bdf, then a conversion is no problem. Tools like fontforge are able to export .bdf
The tool otf2bdf can convert ttf into bdf.
To convert bdf to the internal font format, you need bdf2u8g:
http://code.google.com/p/u8glib/source/browse/tools/font/bdf2u8g/bdf2u8g.c
It compiles on windows and unix.

Oliver

u8glib_arduino_v1.09pre9.zip (692 KB)

Using

u8g.setContrast(208);

works as it should and sets the contrast. But I have a few questions. From what I’ve read in the datasheet the contrast value is a 6 bit value. I’m guessing the range 0 – 255 is divided down to 0 – 63?

I’ve begun investigating bdf fonts using FontForge. I looks like converting a font then modifying / drawing the bitmap for the size I want might be the best method, but I don’t really understand how point size converts to pixel size. I think I have a lot to learn before I can produce a usable font.

Thanks again for all of your help and support.

works as it should and sets the contrast. But I have a few questions. From what I’ve read in the datasheet the contrast value is a 6 bit value. I’m guessing the range 0 – 255 is divided down to 0 – 63?

I try to keep a range from 0 to 255 for the user interface. I think the actual range is from 0 to 127. It is scaled down in line 106
http://code.google.com/p/u8glib/source/browse/csrc/u8g_dev_uc1701_mini12864.c

I’ve begun investigating bdf fonts using FontForge. I looks like converting a font then modifying / drawing the bitmap for the size I want might be the best method, but I don’t really understand how point size converts to pixel size. I think I have a lot to learn before I can produce a usable font.

The SIZE parameter () of the BDF format defines the PointSize and Resolution of the BDF font. It is ignored by the bdf to u8g converter. The bitmaps are extracted and converted to the internal u8g format without any additional transformation.

Oliver

has anyone ever made a USABLE number font in the size range from 25-30 pixels of height?

all fonts in u8glib in that range have different heights for the numbers 0-9, they are never aligned in height
and the format only has a windows converter which is quite inconvenient -.-

Made some pics of the problem:

the one and five sit one line lower than 3 and 0

the one is one line lower -.-

and here the 7 is one line less high than the 3s and 0

Hi DooMMaster,

I encountered the same issues as you but when I understood a little more about fonts and the conversion process I found this is (in most computer applications) the norm. Fixed width fonts (and perhaps height) don't typically reach a large size. I wanted fixed width and height so I converted and modified my own. It's about 30 pixels high and from memory 28 pixels wide and only includes numbers. My application was for a GPS clock.

Here's a link to a photo with the font: U8glib Custom Fonts GPS Clock | I used FontForge, Fony and b… | Flickr

When I have access to the code I'll update it and paste it here.

For the discussed number fonts, i have used the following conversion process:

  1. Convert (scale+raster) truetype font into a bdf font. Result is a .bdf file. Tool: otf2bdf
  2. Convert .bdf file to a .c file (internal u8glib format). Tool: bdf2u8g

Misalignment already appears in step 1. To fix this, either add information to the original .ttf file or update/fix the intermediate .bdf file. I am always happy to update, fix or add fonts. Just send me the related .bdf or .ttf files.

I have made all bdf file available here:
http://code.google.com/p/u8glib/source/browse/#hg%2Ftools%2Ffont%2Fbuild
So one solution is to download the bdf file and modify this bdf file with some of the existing bdf editors.

Once i receive a bdf (prefered) or ttf, i can offer:

  • Update the release process for u8glib with the new bdf file
  • replace/add the bdf for future releases
  • setup a wiki page with updated or modified bdf files
  • optional: give credits to the contributor

For sure, helping hands are needed here. I know that the converted fonts are not that good. As of now, i do not have anything else.

Thanks in advance,
Oliver

ok… got SERIOUSLY annoyed by the problem :stuck_out_tongue: so I took the fub25 and fixed all the numbers…

It would be nice if you could make them u8glib compatible in format and create a "numbers" version frim it, or at least a restricted.

All Numbers are now aligned on line -1 and have exactly 26 pixels in height… so 25 is the upper line… it is not pretty but a lot pretier than before.

http://uschok.de/~doommaster/fub25.bdf

I will create a Numbers only font now… custom… and simple and clean :slight_smile: will post the file here once it is done

EDIT:
I have also made a numeric font on my own… simple and clean… all numerics are monospaced
http://uschok.de/~doommaster/freedoomr25n.bdf

Feel free to do whatever you want with it… this font is Free in all human and lawful senses.

Many thanks to DooMMasteR for the contributed fixes and the new font.

The font update applies to this font:
http://code.google.com/p/u8glib/wiki/fontgroupfreeuniversal

The new font is described here:
http://code.google.com/p/u8glib/wiki/fontgroupcontributed

I have also added some more fonts from the X11 distribution. Some nice large bitmap fonts are also included:
http://code.google.com/p/u8glib/wiki/fontgroupadobex11

I have attached u8glib version v1.09pre14, which includes all these fonts.

Oliver

u8glib_arduino_v1.09pre14.zip (952 KB)

nice :slight_smile: thx a lot

I will also make another font… in 10px height…maybe even today

EDIT: done
numerics, capitals, degree, math included… 10px high 7-8 wide
http://uschok.de/~doommaster/freedoomr10r.bdf

I'm really stoked you guys are doing this! I took a look and was a little intimidated by the process of making my own font and converting it, as I know almost nothing about fonts. (Also FontForge crashes on my computer.)

Thank you!

@DooMMasteR

Great, thanks for the contribution (Karma+)

I have added your font to the distribution: Google Code Archive - Long-term storage for Google Code Project Hosting.

Oliver

@koyaanisqatsi

I usually only use Linux software here (like FontForge). For Windows also "Fony" might work.

Oliver

koyaanisqatsi:
I took a look and was a little intimidated by the process of making my own font and converting it, as I know almost nothing about fonts. (Also FontForge crashes on my computer.)

Thank you!

FontForge is definitely the way to go… but I am also a bit noobish in using it.
I cannot for example, get into bitmap mode from an empty font… I have to import another existing bitmapfont and work from there on -.- which is kind of annoying… but it works.

If you have it in bitmap mode… it is VERY easy to create a pixel perfect bitmap font

I am using a selfcompiled version of FontForge on MacOS X

@olikraus
the new fonts are also copyleft :slight_smile: (public domain) as the other too… I think that I will never do a copyrighted/limited/unfree font :stuck_out_tongue:

HA HA, I have prevailed! FontForge is now running in Ubuntu in a VM (the version available in Ubuntu is kinda old, but it works fine so far). And I think I might be getting the hang of this.

I found how to make bitmap fonts from a new/empty font:

  • Start a new font
  • Element -> Bitmap Strikes Available...
  • Choose "X" and specify a pixel size (height)
  • When you edit a glyph, it should edit in bitmap mode. If not, then Window -> New Bitmap Window, and then close/minimize the outline window.

Will be trying out dbf2u8g.exe in the next few days.

Now if only I had an idea on how I want the font to look... :roll_eyes:

nice…
I have updated the Numerics font, since the 1 was made non monospaced…
http://uschok.de/~doommaster/freedoomr25n.bdf

I pushed my wor to gihub, including my started PCB/schematics

I am still struggling with the license I should use… U8Glib is BSD style… so basically anything is fine… but the DallasTemperature library is LGPL and I do not know in what aspects that is limiting my options :stuck_out_tongue: ahhrg LicenseWars :stuck_out_tongue:

This is my personal interpreation about the difference between LGPL and BSD License:
LGPL is more strict and requires that the user can rebuild the complete project which makes use of the LGPL Software. It must be possible to rebuild the complete project with an updated version of the LGPL part. In the case where your complete software is available on github or similar platforms, than this difference does not matter.

However you need to inform the user about the different parts and licenses of your software.

For example, have a look at the u8glib license: Google Code Archive - Long-term storage for Google Code Project Hosting.
U8glib does not have a single license. Each font might have a different license with different requirerments.
Depending on the font, which are used in your project, you might need to give proper reference.

Oliver