• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Fontmetrics, Graphics

 
Ranch Hand
Posts: 567
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Hi All,
I want to measure the length of my string variable as it will appear on a page, but I don't have a window to paint it to.
I am writing HTML - I know what the font is going to be (on the browser), but I don't have any context or canvas or such like.
I want to run this on the server from a servlet so that I can work out how many blank spaces to add after the text to make it appear the same length every time.
I'm making a dropdown box which has to have 2 or 3 columns of data in it, and HTML options do not allow me to embed any other formatting, and unfortunately a fixed-space font like Courier is out of the question.
Thanks for the help
Adam
 
Sheriff
Posts: 7001
6
Eclipse IDE Python C++ Debian Java Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I think you can't do this.
Even if you are requesting to the browser that it use a specific font (using CSS or the FONT tag, for example), you still can't be sure that
(a) the browser will have that particular font - think about the fonts available on other operating systems, "console" browsers such as Lynx etc.) or
(b) The user hasn't overridden the settings because he/she likes another font better, or finds another font easier to read, or
(c) the user's browser will choose to display the text padded in the same way as you own browser.

Can we step back from trying to find out about browser fonts and find out what actual user benefits you are trying to achieve? There may be a way of achieving something just as useful which will work the way browsers do.
 
Adam Hardy
Ranch Hand
Posts: 567
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

(a) the browser will have that particular font - think about the fonts available on other operating systems, "console" browsers such as Lynx etc.) or
(b) The user hasn't overridden the settings because he/she likes another font better, or finds another font easier to read, or
(c) the user's browser will choose to display the text padded in the same way as you own browser.
Can we step back from trying to find out about browser fonts and find out what actual user benefits you are trying to achieve? There may be a way of achieving something just as useful which will work the way browsers do.


Well, the problem is that we are trying to keep the look and feel of the application as close as possible to the MS Access application we are replacing, in order to 'aid user acceptance'. (Made me squirm at first too).
Access has these multi-column dropdowns which we are trying to reproduce. So for example in one scenario, a monkey record can be edited by changing the banana it owns in the dropdown.
Instead of having a list with banana1, banana2 etc, the Access app has multi-columns with
banana1 - ripe - yellow - sweet
banana2 - ripe - yellow/black - mushy
etc etc.
My first impulse would be to replace it with a button that opens a new window with the list of bananas and all fields required, and a click on a radio button causes the window to shut and the banana ID in the record to be set using javascript.
Other possibilities include having javascript synch'd dropdown boxes, one for each column (yuck!).
What would you suggest? This application is littered with these things.
Are you sure it technically can't be done? Since it's an application on an intranet, all users can be instructed about fonts etc. to have on their browsers.

Adam
 
Frank Carver
Sheriff
Posts: 7001
6
Eclipse IDE Python C++ Debian Java Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Are you sure it technically can't be done?
I don't think second-guessing how the fonts will render is the right way to go about it. You'll be much better off looking at the powerful way you can arrange content in the window using CSS. That way the browser can handle it for you. When you get "into" it, CSS is a lot more than just changing the colors of links.
If you haven't already seen it, try and get a look at Microsoft's "outlook in a browser" - it looks astonishingly like the real thing. Take their page apart and see how they do it.
Since it's an application on an intranet, all users can be instructed about fonts etc. to have on their browsers.
I've been round this loop, believe me. The trouble is that every department providing a service to the intranet has this attitude and you can't really avoid ending up with conflicting requirements. It all gets bogged down in politics as to which internal system is "more important", and real users just carry on using what they feel like.
 
Adam Hardy
Ranch Hand
Posts: 567
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

second-guessing how the fonts will render


It's not really a great problem since all I am concerned about is the relative length of the options in the box. The font is after all Arial as well.
But that aside, are there actually any other solutions other than those I mentioned?
 
Frank Carver
Sheriff
Posts: 7001
6
Eclipse IDE Python C++ Debian Java Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
To reiterate, I think CSS is the way to go with this example. WIth CSS you should be able to position all your text items on the page, regardless of their length.
 
Adam Hardy
Ranch Hand
Posts: 567
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Problem is, it's not my decision. I need to present this as an option along with its disadvantages.
That is of course, presuming it is an option. Is it technically possible to get a Graphics object without actually having anywhere to paint anything?

Adam
 
With a little knowledge, a cast iron skillet is non-stick and lasts a lifetime.
reply
    Bookmark Topic Watch Topic
  • New Topic