ThinkGeo.com    |     Documentation    |     Premium Support

PointStyle, GeoFont and non-symbol TrueType fonts?

Hi,


I've made a series of custom PointStyle classes, one of which utilizes the PointStyle constructor with a GeoFont argument.


This works nicely with most TrueType symbol fonts.


However, I've now run into some data that utilizes a font named "Bookshelf Symbols 7" (BSSYM7.TTF). Apparantly I'm able to create a PointStyle object that references this font, but when I try to use it, an exception is thrown.


I'm currently debugging, and I do have the font installed. I can use and visualize symbols from it in another GIS program.


When I open it in my font editing program, I can see that it's classified as "Sans Serif" rather than "Symbolic", which most (all?) other symbol fonts (like "Wingdings 2") are classified as.


Is it correct that Map Suite cannot handle symbol fonts that are not classified as "Symbolic" ?


If not, why is it throwing an exception upon usage ?


If so, why is there such a needless limitation ? A TrueType font is a TrueType font, as I see it.


 



Anyone ? 
  
 Please advise. 


Lars, 
  
   In looking into this issue I can see that the PointStyle that uses fonts call the same underlying GeoCanvas call, DrawText, as labeling does.  As I am aware there are NO restrictions on the font ‘type’ such as Symbolic.  Are you able to use that font as a label font in the TextSyle?  What is the nature of the exception?  Is it possible for us to receive the font to test it? 
  
 David

Hi David,


Sorry for not getting back on this in December.


With regard to the "Bookshelf 7" font, I'm sure you have that yourself on your own machine if you're running Windows 7. It's made by "RICOH Co. Ltd.". If not, I'll send it to you.


But I've run into a related problem with another symbol font, that's more "home-made". It's named "VandGraf_Symbols".


The problem is that PointStyle.Draw() apparently draws the requested symbols with another font. E.g. instead of a circled L, I get an "S". 


The circled L glyph is located in the "S" slot in the font, but the glyph "S" is nowhere in the "VandGraf_Symbols" font, which is why I suspect another font face being used. I've verified that the PointStyle object contains the correct font name up until calling Draw(), but without debug access to the innards of Draw() I cannot determine what is going on. But obviously something's amiss.


I'm attaching the font in question. Like I wrote, it's "home-made" (though not by me), which means that it's not very orderly or anything, more like a hack into a copied font. But I've used the font to display point symbols without problems in both MapInfo and Mapserver, so it ought to work.


Cheers.


 



VandGraf_Symbols.zip (21.4 KB)

Still waiting ...


I had my app print out the PointStyle creation command before the exception in Draw() being thrown.


Here's a typical example:


usePointStyle = New PointStyle(New GeoFont("VandGraf_Symbols",15,DrawingFontStyles.Regular),115,New GeoSolidBrush(New GeoColor(255,0,0,255)))

A first chance exception of type 'System.ArgumentOutOfRangeException' occurred in MapSuiteCore.DLL


 Here's how I see the installed font:




Hi,


I've tried to create a new font by converting the old font. I'm attaching it for your testing.


This aligns the character positions, so it looks more like a normal font.


But it still doesn't seem to work :-(


TIA


 



Vandgraf_Symbols_2.zip (22.1 KB)

Lars,


 I got your Vandgraf_Symbols font, I installed it on my computer and it is displaying fine with your code as you can see in the screen capture below. Can you tell us exactely what you are doing with it that would cause the problem? Thank you.




Hi Val, 
  
 Yep, the last font I sent/attached seems to work. I assume you’ve only tried that, and not the first font I attached (2/2) ? 
  
 I don’t know why this font didn’t work Tuesday, when I tried it out, but it works now (Thursday morning), which is good enough for me. 
  
 So it does indeed look like the malfunction was due to the font being malformed in some way (?) 
  
 Cheers. 


Lars,


  I am glad that we have that eventually working. Any other questions, let us know. Good luck on your development.