Tag Archives: Terminal Services

ClearType and Terminal Services

Did you know that typeface with Terminal Services is usually downgraded from the usual local experience?  Microsoft has the ClearType technology which normally improves the look of text by rounding the edges with different colors giving the characters more rounded effect.

Computer displays in which the positions of individual pixels are permanently fixed by the design of the hardware—such as most modern flat-panel displays—can show strong aliasing artifacts, which manifest as jagged, saw-tooth edges (sometimes referred to as “jaggies”) when displaying small, high-contrast graphic elements such as text. ClearType uses anti-aliasing at the subpixel level to greatly reduce visible artifacts on such displays when text is rendered, making the text appear “smoother” and less jagged.

The technology has been around for a number of years but only recently has become mainstream with Microsoft products having it automatically turned on.

ClearType, a trademark of Microsoft, was first announced at the November 1998 COMDEX exhibition. The technology was first introduced in software in January 2000[1] as an always-on feature of Microsoft Reader, which was released to the public in August 2000. ClearType was later introduced as an operating system feature in Windows XP, where it was kept turned off by default. In Windows Vista, ClearType is turned on by default. In Microsoft Office 2007 and Internet Explorer 7, ClearType turned on by default, even if it is not enabled throughout the operating system. ClearType is also an integrated component of the Windows Presentation Foundation text rendering engine.

It is always good to check Wikipedia first.   The catch here is that Terminal Services has typically turned ClearType off.  At least this was true for Windows Server 2003.

Citrix has announced this in a support article about ClearType.

Symptoms

Microsoft ClearType works correctly inside an ICA session with Citrix Presentation Server running on Windows 2000 Server, but it does not work with Presentation Server version 4.5 running on Windows Server 2003.

Background

With Windows 2000 Server, Microsoft introduced ClearType, a font display technology that improves font display resolution.

In Windows Server 2003, Microsoft have released an update that now enables ClearType support for Terminal Services making it available for Remote Desktop users.

For further information please see Article 946633 The “Font smoothing” feature has no effect in Windows Server 2003 terminal sessions

Status

Citrix is currently working on an update to Presentation Server version 4.5 for Windows Server 2003 to utilize this new Microsoft Update for Terminal Services to provide ICA users with ClearType support.

Please note that Microsoft has only recently allowed this to work on Windows Server 2003.  The hotfix announcement is from March 6, 2008.

Internally ClearType has been discussed several times as part of the XenDesktop and XenApp projects.  XenDesktop received a benefit when ClearType just worked due to it not being Terminal Services based.  XenApp needed the hotfix.  There is one step left and that is to enable ClearType on XenApp for 4.5 and 5.0.  Internal reports suggest that it does not suffer from the change for performance.

Internet Explorer 7 and Microsoft Office 2007 both expect ClearType and apparently Outlook looks pretty bad without it.  At this point it really does not make sense to keep it off if there is no penalty for doing so.

Overall this is a very simple way to make things look the same between local and remote.

Cursor Blinking

There is a feature in operating systems that most of us take for granted.  This is the simple text cursor.   There is a bit of confusion within Windows whether it is called a caret or a cursor (based on the API) but for most people it would just be called a cursor.  The definition of what a cursor is and does is summarized at Wikipedia(cursor).

Blinking Cursor example

Even though computer systems are very different, the cursor remains essentially the same.  Wikipedia makes a good point that there are two cursors typically involved.  One belongs to the mouse pointer and the other shows where the text input will go.  It’s a simplistic explanation but I wanted to make sure that you know I’m talking about the text cursor this time.

The mouse was invented in 1963 by Doug Englebert so it is easy to guess that the mouse cursor was invented then as well.  The text cursor was invented in 1954 as part of the IBM 610 project.  At the same time the first video console was created, so was the first text cursor.

I don’t know when the blinking cursor first came into being.  There is a chance that it existed at the beginning.  It would have been pretty obvious that a cursor isn’t much good unless you can find it.  Blinking things tend to get your attention.  It is clever that it blinks at a frequency that gets your attention but does not annoy you.  It has been known to cause problems for people who have epilepsy.  Microsoft recommends turning off the cursor blinking to avoid seizure.

Cursor Blink-Rate Options

Users who have seizures might be sensitive to the blink rate of screen images, such as the cursor. You can use the Keyboard option in Control Panel to adjust the rate at which the cursor blinks, or you can prevent it from blinking at all. On the Speed tab, move the Cursor blink rate slider all the way to the left to prevent the cursor from blinking.

However, there is another reason why cursor blinking should be off.  In a Terminal Services environment (including Citrix), the cursor blinking can actually be a drain on the system and network.  Each cursor flash (on or off) is sent as a video update to the client.  This can create a sizable amount of traffic if hundreds of users are involved.  In fact, both the network bandwidth and CPU cycles would be wasted.  This is especially true for when there is no user there.  Idle sessions with blinking cursors can create activity that is essentially wasteful.  Usually the cursor is turned off in Terminal Services environments but sometimes it can still be active.  For example, in Windows XP, the cursor flashes as if it would do on the console but going through RDP.  The easiest way to disable the flashing is to use the keyboard control panel applet and shift the blinking rate to none.

CursorBlinkRate

The cursor to the left of the slider will show you how fast the cursor will blink.  The default is to cycle the cursor every 1060ms (1.06s).  This is for both the on and off stages.  The default I quoted is from Windows 2003 and Windows XP.  Windows 2000 had it at 1000ms for some reason.  The real question is why 530ms was chosen over 500ms for each stage.  If you know the answer, I’m curious to know.

There is one downside to turning off the blinking however.  It makes the cursor blend in with the rest of the screen.  It also looks a bit strange if you are used to flashing cursors.  We had a bit of a debate about this with PortICA and the ultimate decision has yet to be reached.  The current bias is towards not adjusting what the administrator or user has chosen.  In other words, respect the settings and make it look just like how it would normally.  Microsoft and Citrix have a history of wanting to turn off the blinking.  There were lots of good arguments against it in the past.  Many of those reasons aren’t as valid as they used to be based on the exploding capacity of network bandwidth and CPU cycles.

In PortICA we want to make it as normal an experience as possible.  We also have the luxury of claiming a workstation for ourselves (unless we are being virtualized).  This means that we prefer the user experience over worrying about resource usage.  Rest assured, we do not want to waste resources but we do want to present the best face.  This means that the user should see what they normally see.  Based on my own experiences, the cursor does add a lot of value to doing text input and it feels like something is just not right when it doesn’t act like it normally does.

All of this was recently triggered by the problem that was found with HyperTerminal.  Some applications just don’t like having the cursor being non-blinking.

As this post comes to an end, I realize that what would normally be considered a boring topic is actually interesting.  Well, maybe not that interesting but at least relevant.  I could have dived into the realm of the Windows API related to the cursor (caret) blinking or even the place in the registry where the user profile stores the blink value for Windows.  Not that, for most, would truly be boring so I’ll just skip it.

If you have opinions about what PortICA should do for this, please leave a comment.  Assume for now that we will fully respect the user’s setting for blink rate.